小编RoX*_*oXX的帖子

在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
查看次数

是否有.net(或至少c#)的安全重构工具?

我最近阅读了Michael C. Feathers的书,Working effectively with legacy code并提到了一种测试自动重构工具安全性的方法.

我的问题是:.net平台有没有安全的重构工具?; 这意味着只允许实际重构的工具,例如,在以下示例中不允许inline variabletemp变量进行重构,或者至少显示我正在更改逻辑的警告.

class Program
{
    private static int _x;

    static void Main()
    {
        int temp = Test();
        for (int i = 0; i < 10; ++i)
        {
            Console.WriteLine(temp);
        }
        Console.ReadKey();
    }


    private static int Test()
    {
        return ++_x;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经在重构工具ResharperCoderush + Refactor pro最新版本上测试了这个例子,两者都未通过测试并允许重构:

class Program
{
    private static int _x;

    static void Main()
    {
        for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

.net c# refactoring

5
推荐指数
3
解决办法
3436
查看次数

标签 统计

c# ×2

.net ×1

notifications ×1

refactoring ×1

registry ×1

wbem ×1

wmi ×1