• C#对注册表的操作


    一、引入命名空间:

    using Microsoft.Win32;

    二、创建注册表项:CreateSubKey(name)方法

    添加SubKey时候首先要打开一个表项,并设置参数为true,才能成功创建子项

    //给要创建的注册表设置一个变量,使用更方便
    private string RegistFileName = "test";
    复制代码
    /// <summary>
    /// 创建一个test注册表项,下面包含OpenLog,和SaveLog两个子项
    /// </summary>
    private void CreateRegistFile()
    {
      //SOFTWARE在LocalMachine分支下
    RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE",true); RegistryKey software = key.CreateSubKey(RegistFileName); RegistryKey test = key.OpenSubKey(RegistFileName,true); RegistryKey Savekey = test.CreateSubKey("SaveLog"); }
    复制代码

    三、删除注册表项:DeleteSubKey(name,true)方法

    RegistryKey key = Registry.LocalMachine;
    RegistryKey software = key.OpenSubKey("SOFTWARE", true);
    RegistryKey test = software.OpenSubKey(RegistFileName, true);
    test.DeleteSubKey("SaveLog",true); 

    四、添加键值:SetValue(name,value)方法

    复制代码
    /// <summary>
    /// 将path写入OPenLog子项
    /// </summary>
    private void writeToRegistFile(string path)
    {
      RegistryKey key = Registry.LocalMachine;
      RegistryKey software = key.OpenSubKey("SOFTWARE", true);
      RegistryKey test = software.OpenSubKey(RegistFileName, true);
      RegistryKey OpenPath = test.OpenSubKey("OpenLog",true);
      //"name"是该键值的name,相当于一个别名,可自行设置
      OpenPath.SetValue("name", path); }
    复制代码

    五、删除键值:DeleteValue(name)方法

    复制代码
    RegistryKey key = Registry.LocalMachine;
    RegistryKey software = key.OpenSubKey("SOFTWARE", true);
    RegistryKey test = software.OpenSubKey(RegistFileName, true);
    RegistryKey OpenPath = test.OpenSubKey("SaveLog",true);
    //删除SaveLog子项下的名为SaveLog的子键
    OpenPath.DeleteValue("name");
    复制代码

    六、判断注册表项是否存在:

    复制代码
    /// <summary>
    /// 判断注册表项是否存在
    /// </summary>
    /// <returns>bool</returns>
    private bool IsRegeditItemExist()
    {
      string[] subkeyNames;
      RegistryKey key = Registry.LocalMachine;
      RegistryKey software = key.OpenSubKey("SOFTWARE");
      subkeyNames = software.GetSubKeyNames();
      //在这里我是判断test表项是否存在
      foreach (string keyName in subkeyNames)
      {
        if (keyName == RegistFileName)
        {
          key.Close();
          return true;
        }
      }
      key.Close();
      return false;
    }
    复制代码

    七、判断键值是否存在:

    复制代码
    /// <summary>
    /// 判断该路径是否已经存在
    /// </summary>
    /// <param name="path">路径</param>
    /// <returns></returns>
    private bool IsRegeditKeyExit(string name)
    {string[] saveSubkeyNames;
    
        RegistryKey key = Registry.LocalMachine;
        RegistryKey software = key.OpenSubKey("SOFTWARE", true);
        RegistryKey test = software.OpenSubKey(RegistFileName, true);
        RegistryKey Savekey = test.OpenSubKey("SaveLog", true);
      //获取该子项下的所有键值的名称saveSubkeyNames saveSubkeyNames = Savekey.GetSubKeyNames(); foreach(string keyName in openSubkeyNames) { if(keyName == name) { key.Close(); return false; } } key.Close(); return true; }
  • 相关阅读:
    有趣的开源家族合照,看看你认识几个?
    fieldset 使用小案例
    java XMPPserver openfire VS tigase
    tomcat 7 jmx配置访问
    JAVA静态域及容器的内存占用探究
    checkStyle字符集不支持解决--Got an exception
    遇到一个很无语的Andorid问题! button 里 android:textColor 属性 设置一个选择器报错!
    android 关于为什么在onCreate里调用view.getChildAt(1).getLeft() 没有值!
    关于Android studio 怎么使用代码混淆的问题!
    sdk manager.exe 闪退 解决办法!
  • 原文地址:https://www.cnblogs.com/AlexOneBlogs/p/7808552.html
Copyright © 2020-2023  润新知