【C#】——注册表技术(二)

在 C# 中操作注册表

在 C# 中注册表的基本操作主要包括读取注册表中的信息、创建和修改注册表信息以及删除注册表中的信息。

读取注册表中的信息

读取注册表中的信息主要是通过 RegistryKey 类中的 OpenSubKey 方法、GetSubKeyNames 方法和 GetValueNames 方法实现的。

1. OpenSubKey 方法

该方法用于检索指定的子项。

public Registry OpenSubKey(string name)

  • name:要以只读方式打开的子项的名称或路径。
  • 返回值:请求的子项;如果操作失败,则为空引用。

说明:如果要打开的项不存在,该方法将返回 null 引用,而不是引发异常 。

【例1】使用 OpenSubKey 方法打开 HKEY_LOCAL_MACHINE\SOFTWARE 子键。

private void Form1_Load(object sender, EventArgs e)
        {
            RegistryKey regkey = Registry.LocalMachine; //创建 RegistryKey 实例
            //使用 OpenSubKey 方法打开 HKEY_LOCAL_MACHINE\SOFTWARE 键
            Registry registrykey = regkey.OpenSubKey(@"SOFTWARE");
        }

2. GetSubKeyNames 方法

该方法用于检索包含所有子项名称的字符串数组。

public string[] GetSubKeyNames()

  • 返回值:包含当前项的子项名称的字符串数组。

说明:如果当前项已被删除,或是用户没有读取该项的权限,将触发异常。

【例2】 创建一个 Windows 应用程序,通过 GetSubKeyNames 方法检索 HKEY_LOCAL_MACHINE\SOFTWARE 子键下包含的所有子项名称的字符串数组。

//添加 using Microsoft.Win32;命名空间
        private void Form1_Load(object sender, EventArgs e)
        {
            RegistryKey regkey = Registry.LocalMachine; //创建 RegistryKey 实例
            //使用 OpenSubKey 方法打开 HKEY_LOCAL_MACHINE\SOFTWARE 键
            RegistryKey sys = regkey.OpenSubKey(@"SOFTWARE");
            //调用 foreach 语句读取 HKEY_LOCAL_MACHINE\SOFTWARE 键下的所有项目
            foreach(string str in System.GetSubKeyNames())
            {
                richTextBox1.Text += str + "\n";
            }
        }

3. GetValueNames 方法

该方法用于检索包含与该项关联的所有值名称的字符串数组。

public string[] GetValueNames()

  • 返回值:包含当前的值名称的字符串数组。

说明:如果没有找到该项的值名称,则返回一个空数组。如果在注册表项设置了一个具有默认值的名称为空字符串的项,则 GetValueNames 方法返回值的数组中包含该空字符串。

【例3】 创建一个 Windows 应用程序,读取 方法检索 HKEY_LOCAL_MACHINE\SOFTWARE 子键下的项目信息。首先通过 Registry 类实例化一个 RegistryKey 类对象,然后利用对象的 OpenSubKey 方法打开指定的键,最后通过循环将所有键值全部提取出来并显示在 ListBox 控件中。

//添加 using Microsoft.Win32;命名空间
        private void Form1_Load(object sender, EventArgs e)
        {
            this.listBox1.ltems.clear();                 //清除 listBox1 控件中的值
            RegistryKey regkey = Registry.LocalMachine; //创建 RegistryKey 实例
            //使用 OpenSubKey 方法打开 HKEY_LOCAL_MACHINE\SOFTWARE 键
            RegistryKey sys = regkey.OpenSubKey(@"SOFTWARE");
            //使用两个 foreach 语句检索 HKEY_LOCAL_MACHINE\SOFTWARE 键下的所有项目
            foreach(string str in System.GetSubKeyNames())
            {
                this.listBox1.ltems.Add("子项名:" + str);
                RegistryKey sikey = sys.OpenSubKey(str); //打开子健
                foreach(string sVName in sikey.GetValueNames())
                {
                    this.listBox1.ltems.Add(sVName+sikey.GetValue(sVName));
                }
                
            }
        }

猜你喜欢

转载自blog.csdn.net/cangsheng45/article/details/80638505