RegistryValueChangeEvent
ネットには、イベント ソース ( など) をサブスクライブし、そのイベントに応答してコードを呼び出す方法を示す多くの例があります。
しかし、そのようなリスナーを列挙する方法はありますか? たとえば、 をリッスンしているすべてのスクリプトまたはプログラム (それらの PID を除く) を一覧表示したいと思いRegistryValueChangeEvent
ます。これは WMI で可能ですか?
これは、検出したいレジストリ変更イベントをリッスンするスクリプト ファイルの例です。
strComputer = "."
Set objWMIServices=GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default")
set objSink = WScript.CreateObject( _
"WbemScripting.SWbemSink","SINK_")
objWMIServices.ExecNotificationQueryAsync objSink, _
"Select * from RegistryValueChangeEvent Where " & _
"Hive = 'HKEY_LOCAL_MACHINE' and " & _
"KeyPath = 'SYSTEM\\ControlSet001\\Control' and " & _
"ValueName = 'CurrentUser'"
WScript.Echo "Listening for Registry " _
& "Change Events..." & vbCrLf
While(True)
WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
WScript.Echo "Received Registry Value Change Event" _
& vbCrLf & wmiObject.GetObjectText_()
End Sub