Google一下“VBS監視注冊表”,TOP 5都是一模一樣的代碼,我查了一下,出處是Hey, Scripting Guy! Blog上一篇名為《How Can I Monitor Changes to a Registry Key?》的文章,真是厚顏無恥。
文章我沒時間翻譯了,貼一下代碼:
復制代碼 代碼如下:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\default")
Set colEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & _
"KeyPath='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run'")
Do
Set objLatestEvent = colEvents.NextEvent
Wscript.Echo Now & ": The registry has been modified."
Loop其實WMI中有4個類可以監視注冊表,分別是
- RegistryEvent
- RegistryTreeChangeEvent
- RegistryKeyChangeEvent
- RegistryValueChangeEvent
看類名就知道分別是做什麼的,上面代碼用到的是RegistryKeyChangeEvent,即注冊表鍵改變事件。
在這裡我不想談WMI事件的用法,這是很基礎的東西;也不想翻譯參考文檔,如果連這種簡單的英語都看不懂,也沒必要用WMI了。我認為WMI最難的地方在於裡面的類太多了,很多時候不知道該用哪個類來實現想要的功能。而現在,該用哪個類已經很清楚了,本文也可以結束了。
參考鏈接:Registering for System Registry Events
原文:http://demon.tw/programming/vbs-wmi-monitor-changes-to-a-registry-key.html