3

在找到并使用注册表编辑以允许通过资源管理器访问它之后,我正在搞乱我的 Windows Phone。我的目标是编写一个快速控制台应用程序,以便在它插入的任何机器上执行此注册表编辑。

这是 WINDOWS 7 注册表。不是电话 这是我要遵循的步骤

到目前为止,我已经编写了可以找到包含“ZuneDriver”的设备注册表项的所有实例的代码

RegistryKey start = Registry.LocalMachine;
    using (RegistryKey root = start.OpenSubKey(@"SYSTEM\CurrentControlSet\Enum\USB"))
    {
        string myKey = "ZuneDriver";
        SearchSubKeys(root, myKey);

这里的问题是,注册表项“ZuneDriver”是“设备参数”项的子项,我需要更改其值。

目前,搜索结果存储在:

    static System.Collections.Specialized.StringCollection log = new System.Collections.Specialized.StringCollection();

通过我的搜索功能:

public static void SearchSubKeys(RegistryKey root, String searchKey)
{
    foreach (string keyname in root.GetSubKeyNames())
    {
        try
        {
            using (RegistryKey key = root.OpenSubKey(keyname))
            {
                if (keyname == searchKey)
                {
                    log.Add(key.Name);
                }


                SearchSubKeys(key, searchKey);
            }
        }
        catch (System.Security.SecurityException)
        {
        }
    }
}

存储的结果如下所示:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_045E&PID_04EC&MI_00\7&b85dba6&0&0000\设备参数\ZuneDriver

我想让我的程序具有注册表访问权限:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_045E&PID_04EC&MI_00\7&b85dba6&0&0000\设备参数

编辑名为“ShowInShell”的 DWORD 值

但它需要通过初始搜索确定\VID_045E&PID_04EC&MI_00\7&b85dba6&0&0000\.....

非常感谢任何指针或建议:)

干杯,

4

1 回答 1

0

我会这样做:

public static void SearchSubKeys(RegistryKey root, String searchKey)
{
    bool containsKey = false;
    foreach (string keyname in root.GetSubKeyNames())
    {
        try
        {
            using (RegistryKey key = root.OpenSubKey(keyname))
            {
                if (keyname == searchKey)
                {
                    containsKey = true;
                }

                SearchSubKeys(key, searchKey);
            }
        }
        catch (System.Security.SecurityException)
        {
        }
    }
    if(containsKey){
        using (RegistryKey key = root.CreateSubKey("Device Parameters"))
        {
            key.SetValue("ShowInShell", /* your value */, RegistryValueKind.DWord);
        }
    }
}
于 2012-02-19T15:40:12.413 回答