HKEY_CURRENT_USER
の特定のRegistryKeyが変更されたときに通知が必要です。 これまでのところ、私は成功しませんWMI
を経由して、これを試してみました:私の第二のアプローチはhttp://msdn.microsoft.com/en-us/library/aa393042(VS.85).aspxからのC#に移植する目的で例をWBEM Scripting COM component
を使用していたRegistryKeyの値が変更されたときに通知を受け取ります。
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();
(エラーは「見つかりません」された)が、私はWBEM COMの使用サンプルをC言語で見つけられませんでした。#
私はこのhttp://www.codeproject.com/KB/system/registrymonitor.aspxクラスを見つけましたが、このクラスはキー全体を監視するだけであり、特定の値(ValueName
で指定)上のサンプル)が変更されます。
編集: msdn vbscriptの例でHiveをHKEY_CURRENT_USER
に変更すると、動作が停止します。このようRegistryValueChangeEvent
として HKEY_CLASSES_ROOT
への変更とHKEY_CURRENT_USER
じんましんがRegistryEvent
またはそれから派生したクラスでサポートされていません、私はこの動作については何もなく、a link from 2003
EDIT2を見つけることができませんでした。 (MSDN)
で「ハック」私はあなたがコードのプロジェクトを変更することができると信じていましたどのキーが変更されたかを少なくとも知るために、複数の待機ハンドル/モニターを使用するコード。私は、モニターの意味がどういうものなのかよくわかりません - それほど悪くはありません:http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx :-) –