カテゴリー別アーカイブ: スクリプト

レジストリのキー・値を削除する方法

レジストリのキー(ハイブ)と値を削除する方法を2通り紹介します。

もちろん他にも方法はありますが、使いやすくて簡単というのに弱いので。

  1. reg delete コマンドを利用する
  2. .regファイルを読み込む

まずは1.の方法から。

reg delete HKLMSoftwareSample /f

これは、Sampleというキー以下全てを削除します。/fオプションを指定すると所謂「Yes/No」を入力せずに済みます。

他にもオプションがあるので、reg delete /? を実行してみてください。

次に2.の方法。

.regファイルを次のように記入します。

REGEDIT4

[HKEY_CURRENT_USERSoftwareSample]

消したいキーに-(マイナス)をつけます。

値を消したい場合は、次の通り。

REGEDIT4

[HKEY_CURRENT_USERSoftwareSample]

Sample=-

=の後ろ、値部分を-(マイナス)にします。

このように作った.regファイルをregeditで読み込むようなバッチファイルを作成すればOKです。

実際にはこのように書きます。

regedit /s sample.reg

regedit /s でダイアログ無しに読み込ませることが出来ます。SilentのSだと覚えています。

ADへのログオン・ログオフイベントを追跡する(Eventcreate+LogParser編)

WindowsServer2003とWindowsXP以降の環境で利用できます。

概要は次の通り。

  1. クライアントPCからEventcreateコマンドで、DCのイベントログにログオン・ログオフの度にイベントを書き込む。
  2. DCのイベントログをLogParserから検索・出力する。

当初は、WSHからDCのイベントログへの書き込もうとしましたが、そうすると、イベントログのSID(ユーザ)がN/Aとなり、どのユーザからのログオンなのか判別がつかなくなりました。もちろんMessage領域に%USERNAME%を書き込むことで、文字列を取得することは出来ますが、イベントログのSIDに納めるほうが、より直感的なのでEventcreateを利用することにしました。

・ログオン

eventcreate /s %LOGONSERVER% /u %username% /l application /t SUCCESS /ID 1 /d “%LOGONSERVER:~2%”

・ログオフ

eventcreate /s %LOGONSERVER% /u %username% /l application /t SUCCESS /ID 2 /d “%LOGONSERVER:~2%”

今回は ログオン先を取得したかったので、Message領域に%LOGONSERVER%を格納しています。

Eventecreateコマンドでは書き込み先のイベントログ種別を選択することができますが、今回はアプリケーションログに書き込んでいます。

なお、WindowsServer2003のイベントログに対してリモートユーザがログの書き込みを行う際は下記リンクの処理が必要になります。

http://support.microsoft.com/kb/323076/ja

私はDCのレジストリを修正することで対応しました。

書き込み先がアプリケーションログなので変更するレジストリは次のものになります。

HKEY_LOCAL_MACHINESystemCurrentControlSetServices

EventlogApplicationCustomSD

このキーの値に、(A;;0x3;;;AU)を追記することで、AuhtenticatedUsersからの書き込みが可能になります。

また、ここでは出力先をCSVファイルに指定していますが、LogParserではデータベースを出力先とすることが可能です。今回は出力したCSVファイルをbcpコマンドでDBに取り込むことにしました。

あとはログオンスクリプト、ログオフスクリプトの設定、LogParserのスクリプトのスケジュール設定を行えば、ログオン・ログオフの履歴を取得することができます。