• C#注册表操作


    用C#对注册表进行操作需要调用命名空间Microsoft.Win32中封装的二个类:Registry类和 RegistryKey类。在RegistryKey类中定义了二个方法用来创建注册表中的键和键值,它们是CreateSubValue

    ( )方法和SetValue ( )方法。

    <1>CreateSubKey ( String keyName )方法:此方法是创建以后面的字符串为名称的子键。

    <2>SetValue ( String keyName , String keyValue )方法:此方法不但可以用来重命名键值的数值,还可以用来创建新的键值。具体情况为:当打开的子键中,如果存在此键值,就把新值赋给他,

    实现重命名操作。如果不存在,则创建一个新的键值。

    首先导入要引用的命名空间:
    Using Microsoft.Win32;

    1.创建一个主键、子键并设定键值:
    RegistryKey regit = Registry.LocalMachine ;
    RegistryKey hardWare = regit.OpenSubKey ("HARDWARE" , true);//打开的项必须存在,否则会抛出异常,后面的布尔值“true”表示可以写入。
    RegistryKey example =hardWare.CreateSubKey ("EXAMPLE");
    RegistryKey subKey = example.CreateSubKey ("SUBKEY");
    subKey.SetValue ("VALUE" , "1234");
    regit.Close();
    这段代码是在主键“HKEY_LOCAL_MACHIN”下面的“HAREWARE”主键下创建一个名为“EXAMPLE”的主键,再在此主键下面创建一个名称为“SUBKEY”的子键和名称为“VALUE”的键值,键

    值的值为“1234”;

    2.修改或创建指定键值名称的键值(如果指定的键值名称存在则修改否则就创建):
    RegistryKey regit = Registry.LocalMachine;
    RegistryKey hardWare = regit.OpenSubKey ("HARDWARE", true);//打开的项必须存在,否则会抛出异常,后面的布尔值“true”表示可以写入。
    RegistryKey example = software.OpenSubKey ("EXAMPLE" , true);//打开的项必须存在,否则会抛出异常,后面的布尔值“true”表示可以写入。
    RegistryKey subKey = software.OpenSubKey ("SUBKEY" , true);//打开的项必须存在,否则会抛出异常,后面的布尔值“true”表示可以写入。
    subKey.SetValue("NEWVALUE" , "4321") ;
    regit.Close();
    由于刚才创建的“SUBKEY”子键不存在名为“NEWVALUE”的键值,所以这段代码是创建名为“NEWVALUE”的键值并设置键值的值为“47321”;

    3.删除子键:
    RegistryKey regit = Registry.LocalMachine;
    RegistryKey hardWare = regit.OpenSubKey ("HARDWARE", true);//打开的项必须存在,否则会抛出异常,后面的布尔值“true”表示可以写入。
    RegistryKey example = software.OpenSubKey ("EXAMPLE" , true);//打开的项必须存在,否则会抛出异常,后面的布尔值“true”表示可以写入。
    example.DeleteValue("SUBKEY");//删除的项必须存在,否则会抛出异常。
    regit.Close();

    4.判断注册表中某项是否存在:
    string[] subkeyNames;
    RegistryKey regit = Registry.LocalMachine;
    RegistryKey hardWare = regit.OpenSubKey("HARDWARE");
    RegistryKey example = hardWare.OpenSubKey("EXAMPLE");
    subkeyNames = example.GetSubKeyNames();//取得该项下所有子项的名称的集合,并传递给数组
    foreach (string keyName in subkeyNames) //遍历整个数组
    {
        if (keyName == "SUBKEY") //判断子项的名称
        {
            regit.Close();
            return true;
        }
    }
    regit.Close();
    return false;

    5.判断某项键值是否存在:
    string[] subKeyValues;
    RegistryKey regit = Registry.LocalMachine;
    RegistryKey hardWare = regit.OpenSubKey("HARDWARE");
    RegistryKey example = hardWare.OpenSubKey("EXAMPLE");
    RegistryKey subKey = software.OpenSubKey ("SUBKEY");
    subKeyValues = subKey.GetValueNames();//取得该项下所有键值的名称的集合,并传递给数组
    foreach (string keyValue in subKeyValues)
    {
        if (keyValue == "VALUE") //判断键值的名称
        {
            regit.Close();
            return true;
        }
    }
    regit.Close();
    return false;

  • 相关阅读:
    关于Python安装PIL库失败的原因
    SSH免密登录及配置完成后仍需要输入密码的解决办法
    Github+Hexo博客搭建教程(三)
    Github+Hexo博客搭建教程(二)
    Github+Hexo博客搭建教程(一)
    winform中控件的简单数据绑定
    分享一个跨线程访问控件的很实用的方法
    自定义两个控件,一个是显示图标和文字的矩形,一个是带边框的label(但是不是label)
    写一个给字符串根据长度添加换行符的处理方法
    Winform DataGridView控件在业务逻辑上的简单使用
  • 原文地址:https://www.cnblogs.com/liukemng/p/1895651.html
Copyright © 2020-2023  润新知