标签: wbem

在RegistryKey Value更改时接收通知

我希望在HKEY_CURRENT_USER更改特定RegistryKey输入时发出通知.到目前为止,我试过这个WMI没有成功:

var query = new WqlEventQuery(string.Format(
"SELECT * FROM RegistryKeyChangeEvent WHERE Hive='{0}' AND KeyPath='{1}' AND ValueName='{2}'",
                hive, keyPath.Replace("\\","\\\\"), valueName));
_watcher = new ManagementEventWatcher(query);
_watcher.Scope.Path.NamespacePath = @"root\default";
_watcher.EventArrived += (sender, args) => KeyValueChanged();
_watcher.Start();
Run Code Online (Sandbox Code Playgroud)

(错误是"未找到")

我的第二种方法是使用WBEM Scripting COM component意图将示例从http://msdn.microsoft.com/en-us/library/aa393042(VS.85).aspx移植到c#,但我没有找到任何用法示例c#中的WBEM COM

我发现这个http://www.codeproject.com/KB/system/registrymonitor.aspx类,但它不符合我的需要,因为这个类只监视整个键,我只想要一个特定值的通知(指定通过ValueName上面的示例)得到改变.

编辑:如果您HKEY_CURRENT_USER在msdn vbscript示例中更改Hive ,它将停止工作.我找不到任何关于这种行为的信息,而是2003年的一个链接

EDIT2:不支持对其进行更改HKEY_CLASSES_ROOT和从中派生的类,例如.(MSDN)HKEY_CURRENT_USERRegistryEventRegistryValueChangeEvent

c# registry wmi notifications wbem

7
推荐指数
1
解决办法
8147
查看次数

标签 统计

c# ×1

notifications ×1

registry ×1

wbem ×1

wmi ×1