関連する Microsoft のドキュメント RegistryValueChangeEvent class Receiving a WMI Event RegistryValueChangeEvent は、HKEY_CURRENT_USER をサポートしていません 以下のサンプルは、システム環境変数の PATH を変更した場合にメッセージが表示されます event_change_reg.wsf
<JOB> <OBJECT id="WshShell" progid="WScript.Shell" /> <SCRIPT language="VBScript"> Crun ' ************************************** ' WMI ' ************************************** Set objWMIServices = GetObject("winmgmts:\\.\root\default") Set objSink = WScript.CreateObject( "WbemScripting.SWbemSink","SINK_") ' ************************************** ' WMI イベント登録 ' ************************************** objWMIServices.ExecNotificationQueryAsync objSink, _ "Select * from RegistryValueChangeEvent Where " & _ "Hive = 'HKEY_LOCAL_MACHINE' and " & _ "KeyPath = 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment' and " & _ "ValueName = 'Path'" WScript.Echo "イベント待機中..." While True WScript.Sleep 1000 Wend ' ************************************** ' 終了確認 ' ************************************** Wscript.Echo "処理が終了しました" ' ************************************** ' WMI イベント ' ************************************** Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext) WScript.Echo "レジストリが変更されました" WScript.Echo wmiObject.KeyPath WScript.Echo wmiObject.ValueName WScript.Echo WshShell.RegRead("HKLM\" & wmiObject.KeyPath & "\" & wmiObject.ValueName) End Sub ' ************************************** ' Cscript.exe で実行を強制 ' Cscript.exe の実行終了後 pause で一時停止 ' ************************************** Function Crun( ) Dim str str = WScript.FullName str = Right( str, 11 ) str = Ucase( str ) if str <> "CSCRIPT.EXE" then str = WScript.ScriptFullName strParam = " " For I = 0 to Wscript.Arguments.Count - 1 if instr(Wscript.Arguments(I), " ") < 1 then strParam = strParam & Wscript.Arguments(I) & " " else strParam = strParam & Dd(Wscript.Arguments(I)) & " " end if Next Call WshShell.Run( "cmd.exe /c cscript.exe " & Dd(str) & strParam & " & pause", 3 ) WScript.Quit end if End Function ' ************************************** ' 文字列を " で囲む関数 ' ************************************** Function Dd( strValue ) Dd = """" & strValue & """" End function </SCRIPT> </JOB>
|
【VBScriptの最新記事】
- Windows 標準の CDO.Message で(GmailまたはYahoo!メールを使って)簡単にバッチ処理からメールを送る
- バックアップスクリプトを作るスクリプト
- バッチ処理の為の .wsf スケルトン / cscript.exe での実行を強制する / 自分自身の呼び出し
- 【VBS】WshShell.Runによる外部プログラムの実行のバリエーションと注意事項
- 【VBS + Excel】シンプルな詳細設計書のフォーマット。1) Excel のダウンロード、2) VBScript で作成するサンプル
- VBScript : CAPICOM を使った通常文字列の Base64エンコードと SHA1 と MD5 と SHA256/384/512
- 【VBS汎用】SHIFT_JISデータを各種キャラクタセットのテキストファイルへ変換
- VBScript : デスクトップの列挙
- Excel シートから Basp21 を使用してメールの送受信をして、今後の何かに役立てる
- VBScript + clipコマンド + レジストリ登録で、エクスプローラのディレクトリの右クリックでファイル名のリストをクリップボードにコピーできるようにする
- VBScript(WMI) : OSの情報をコマンドプロンプトに一覧で表示する
- VBScript(WMI) : 共有一覧
- IE のお気に入りディレクトリにあるファイルの表示・非表示を設定する / HTA(HTML アプリケーション)
- VBScript : ディレクトリ内のディレクトリで使用している容量一覧
- VBScript : スクリプトが存在するディレクトリをユーザ環境変数の PATH へ登録
- VBScript で GUID 生成
- XMLファイルの書き換え (VBScript)
- VBScript から実行する PHPコードの PDF処理のサンプル
- Cscript.exe の引数と、Windows Script Host を無効にするレジストリ設定
- Access.Application ( docmd.TransferText ) でエクスポートとインポート