在线等。C#如何 遍历注册表查出某一值?
请大神们看清楚哈。我只知道 在 HKEY_LOCAL_MACHINE\SOFTWARE 下面。然后在哪个子项里不清楚 ,我想查找它有没有。
请大神们写下 --------------------编程问答-------------------- 参考帖子 --------------------编程问答-------------------- 楼上 大哥: 你们的方法都是指定了“注册表中的项”! 而我要找的“键值”根本就不知道位于什么地方~ --------------------编程问答-------------------- 楼主,MSDN有RegistryProxy 类,里面有详细例子,你参考借鉴:
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref1/html/T_Microsoft_VisualBasic_MyServices_RegistryProxy.htm --------------------编程问答--------------------
static void GetNames(string subkey, string searchword)
{ RegistryKey regkey,regchildkey;
regkey = Registry.LocalMachine.OpenSubKey(subkey);//获取项目
if (regkey.SubKeyCount > 0)
for (int i = 0; i < regkey.SubKeyCount; i++)
GetRegValues(string.Concat(subkey,"\\",regkey.GetSubKeyNames()[i]), searchword);
else
{
regchildkey = Registry.LocalMachine;
if (regchildkey.OpenSubKey(subkey).ValueCount > 0)//获取键值
foreach (string str in regchildkey.OpenSubKey(subkey).GetValueNames())
if (str.CompareTo(searchword) == 0)
Console.WriteLine(string.Concat("Names:", regchildkey.Name,"\\",subkey, " Keys:", str));
}
}
GetRegValues("SOFTWARE", "Launched");我要获取键为"Launched"的路径。同理,你可以获取别的信息,遍历所有software下面的信息。以上递归完成。 --------------------编程问答--------------------
static void GetRegValues(string subkey, string searchword)改了一下,键值的获取。 --------------------编程问答--------------------
{ RegistryKey regkey,regchildkey;
regkey = Registry.LocalMachine.OpenSubKey(subkey);//获取项目
if (regkey.SubKeyCount > 0)
for (int i = 0; i < regkey.SubKeyCount; i++)
GetRegValues(string.Concat(subkey,"\\",regkey.GetSubKeyNames()[i]), searchword);
else
{
regchildkey = Registry.LocalMachine;
if (regchildkey.OpenSubKey(subkey).ValueCount > 0)//获取键值
foreach (string str in regchildkey.OpenSubKey(subkey).GetValueNames())
if (str.CompareTo(searchword) == 0)
Console.WriteLine(string.Format("路径:{0} 键名称:{1} 键值:{2}", string.Concat(regchildkey.Name, "\\", subkey), str, regchildkey.OpenSubKey(subkey).GetValue(str).ToString()));
}
}
完解。
static void GetRegValues(string subkey, string searchword)
{ RegistryKey regkey,regchildkey;
regkey = Registry.LocalMachine.OpenSubKey(subkey);//获取项目
if (regkey.SubKeyCount > 0)
for (int i = 0; i < regkey.SubKeyCount; i++)//在项目中找到。
if (regkey.Name.Substring(regkey.Name.LastIndexOf("\\") + 1, regkey.Name.Length - regkey.Name.LastIndexOf("\\") - 1).CompareTo(searchword) == 0)
{
Console.WriteLine(string.Format("路径:{0} 键名称:{1}", regkey.Name, subkey));
break;
}
else
GetRegValues(string.Concat(subkey, "\\", regkey.GetSubKeyNames()[i]), searchword);
else
{
regchildkey = Registry.LocalMachine;//在键值中找到。
if (regchildkey.OpenSubKey(subkey).ValueCount > 0)//获取键值
foreach (string str in regchildkey.OpenSubKey(subkey).GetValueNames())
if (str.CompareTo(searchword) == 0)
Console.WriteLine(string.Format("路径:{0} 键名称:{1} 键值:{2}", string.Concat(regchildkey.Name, "\\", subkey), str, regchildkey.OpenSubKey(subkey).GetValue(str).ToString()));
}
}
补充:.NET技术 , C#