当前位置:编程学习 > C#/ASP.NET >>

在线等。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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,