C#注册表搜索,从结果反向遍历
本文关键字:遍历 结果 注册表 搜索 | 更新日期: 2023-09-27 18:25:16
在找到并使用注册表编辑以允许通过资源管理器访问后,我正在摆弄我的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''通过初始搜索。。。。。
任何建议或建议都非常感谢:)
干杯,
Ben
我会这样做:
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);
}
}
}