架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 22560|回复: 0

[资料] c#通用注册表操作方法

[复制链接]
发表于 2016-3-4 16:14:18 | 显示全部楼层 |阅读模式
  1. /// <summary>
  2.         /// 注册表帮助类
  3.         /// 从读、写、删除、判断
  4.         /// 四个方面实现对注册表的简单操作
  5.         /// </summary>
  6.         public class RegeditHelper
  7.         {
  8.                 /// <summary>
  9.                 /// 读取指定名称的注册表的值
  10.                 /// 读取的注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下的XXX目录中名称为name的注册表值
  11.                 /// </summary>
  12.                 /// <param name="name">注册名称</param>
  13.                 /// <param name="parentKeyName">要打开的子项的名称或路径</param>
  14.                 /// <returns></returns>
  15.                 public static object GetRegistData(string name, string parentKeyName = "SOFTWARE")
  16.                 {
  17.                         try
  18.                         {
  19.                                 RegistryKey hkml = Registry.LocalMachine;
  20.                                 RegistryKey software = hkml.OpenSubKey(parentKeyName, true);
  21.                                 var registData = software.GetValue(name);
  22.                                 hkml.Close();
  23.                                 return registData;
  24.                         }
  25.                         catch (Exception ex)
  26.                         {
  27.                                 return "System Exceptions:" + ex.Message;
  28.                         }
  29.                 }

  30.                 /// <summary>
  31.                 /// 向注册表中写数据
  32.                 /// 在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下新建XXX目录并在此目录下创建名称为name值为tovalue的注册表项
  33.                 /// </summary>
  34.                 /// <param name="name">注册表名称</param>
  35.                 /// <param name="tovalue">值</param>
  36.                 /// <param name="parentKeyName">要打开的子项的名称或路径</param>
  37.                 public static void WriteRegedit(string name, object tovalue, string parentKeyName = "SOFTWARE")
  38.                 {
  39.                         try
  40.                         {
  41.                                 RegistryKey hklm = Registry.LocalMachine;
  42.                                 RegistryKey software = hklm.OpenSubKey(parentKeyName,true);
  43.                                 software.SetValue(name, tovalue);
  44.                                 hklm.Close();
  45.                         }
  46.                         catch (Exception ex)
  47.                         {
  48.                                 return;
  49.                         }
  50.                 }
  51.                 /// <summary>
  52.                 /// 更新注册表项
  53.                 /// </summary>
  54.                 /// <param name="name">键</param>
  55.                 /// <param name="tovalue">值</param>
  56.                 /// <param name="parentKeyName">父级名称</param>
  57.                 public static void UpdateRegedit(string name, string tovalue, string parentKeyName = "SOFTWARE")
  58.                 {
  59.                         try
  60.                         {
  61.                                 RegistryKey hklm = Registry.LocalMachine;
  62.                                 RegistryKey software = hklm.OpenSubKey(parentKeyName, true);
  63.                                 software.SetValue(name, tovalue);
  64.                 hklm.Flush();
  65.                                 hklm.Close();
  66.                         }
  67.                         catch (Exception ex)
  68.                         {
  69.                                 return;
  70.                         }
  71.                 }
  72.                 /// <summary>
  73.                 /// 创建子项
  74.                 /// </summary>
  75.                 /// <param name="name">子项名称</param>
  76.                 /// <param name="parentKeyName">子项的父级</param>
  77.                 public static void CreateRegistItem(string name, string parentKeyName = "SOFTWARE")
  78.                 {
  79.                         try
  80.                         {
  81.                                 RegistryKey hklm = Registry.LocalMachine;
  82.                                 //RegistryKey software = hklm.CreateSubKey(parentKeyName + "\" + name, RegistryKeyPermissionCheck.ReadWriteSubTree);
  83.                                 RegistryKey software = hklm.OpenSubKey(parentKeyName,true);
  84.                                 software.CreateSubKey(name);
  85.                                 hklm.Flush();
  86.                                 hklm.Close();
  87.                         }
  88.                         catch (Exception ex)
  89.                         {
  90.                                 return;
  91.                         }
  92.                 }
  93.               
  94.                 /// <summary>
  95.                 /// 删除注册表中指定的注册表项
  96.                 /// 在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中删除名称为name注册表项
  97.                 /// </summary>
  98.                 /// <param name="name">注册表名称</param>
  99.                 /// <param name="parentKeyName">要打开的子项的名称或路径</param>
  100.                 public static void DeleteRegist(string name, string parentKeyName = "SOFTWARE")
  101.                 {
  102.                         try
  103.                         {
  104.                                 RegistryKey hkml = Registry.LocalMachine;
  105.                                 RegistryKey software = hkml.OpenSubKey(parentKeyName, true);
  106.                                 var aimnames = software.GetSubKeyNames();
  107.                                 foreach (string aimKey in aimnames)
  108.                                 {
  109.                                         if (aimKey == name)
  110.                                                 software.DeleteSubKeyTree(name);
  111.                                 }
  112.                                 hkml.Close();
  113.                         }
  114.                         catch (Exception ex)
  115.                         {
  116.                                 return;
  117.                         }
  118.                 }
  119.                 /// <summary>
  120.                 /// 判断指定注册表项是否存在
  121.                 /// 在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中判断名称为name注册表项是否存在
  122.                 /// 这一方法在删除注册表时已经存在
  123.                 /// 在新建一注册表项时也应有相应判断
  124.                 /// </summary>
  125.                 /// <param name="name">注册表名称</param>
  126.                 /// <param name="parentKeyName">要打开的子项的名称或路径</param>
  127.                 /// <returns></returns>
  128.                 public static bool IsRegeditKeyExit(string name, string parentKeyName = "SOFTWARE")
  129.                 {
  130.                         try
  131.                         {
  132.                                 RegistryKey hkml = Registry.LocalMachine;
  133.                                 RegistryKey software = hkml.OpenSubKey(parentKeyName, true);
  134.                                 var subkeyNames = software.GetValueNames();
  135.                                 foreach (string keyName in subkeyNames)
  136.                                 {
  137.                                         if (keyName.ToUpper() == name.ToUpper())
  138.                                         {
  139.                                                 hkml.Close();
  140.                                                 return true;
  141.                                         }
  142.                                 }
  143.                                 hkml.Close();
  144.                                 return false;
  145.                         }
  146.                         catch (Exception ex)
  147.                         {
  148.                                 return false;
  149.                         }
  150.                 }


  151.                 /// <summary>
  152.                 /// 判断是否存在子节点
  153.                 /// </summary>
  154.                 /// <param name="name">注册表子节点名称</param>
  155.                 /// <param name="parentKeyName">要打开的子项的名称或路径</param>
  156.                 /// <returns></returns>
  157.                 public static bool IsRegeditItemExit(string name, string parentKeyName = "SOFTWARE")
  158.                 {
  159.                         try
  160.                         {
  161.                                 RegistryKey hkml = Registry.LocalMachine;
  162.                                 RegistryKey software = hkml.OpenSubKey(parentKeyName, true);
  163.                                 var subkeyNames = software.GetSubKeyNames();
  164.                                 foreach (string keyName in subkeyNames)
  165.                                 {
  166.                                         if (keyName.ToUpper() == name.ToUpper())
  167.                                         {
  168.                                                 hkml.Close();
  169.                                                 return true;
  170.                                         }
  171.                                 }
  172.                                 hkml.Close();
  173.                                 return false;
  174.                         }
  175.                         catch (Exception ex)
  176.                         {
  177.                                 return false;
  178.                         }
  179.                 }

  180.         }
复制代码






上一篇:url编码和解码
下一篇:c#判断一个字符串是否为url
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-3-20 16:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表