最近在写软件的时候,又使用到了C#操作系统注册表方面的编程知识,想要学习C#编程的同学,学会对系统注册表的键值创建、删除、修改、获取等操作是十分必要的,因为系统注册表里包含了大量的系统和软件安装信息,熟练掌握C#对注册表的操作使用,可以让我们在日常的小应用程序开发中得心应手,OK,下面亦阿呆狗就将自己在平常使用C#操作注册表的心得经验给大家分享一下,喜欢C#编程的同学赶紧看过来,对编程不感冒没有兴趣的同学请略过此文。
要使用C#对系统注册表进行操作,首先我们需要引入一个命名空间:
using Microsoft.Win32;
在这个命名空间下包含了许多对注册表进行操作的类,比如常用的RegistryKey类,这个类可以帮助我们定位到注册表最开头的分支,然后进行下一步的操作,下面以具体例子给大家讲解。
注册表开头分支,也叫根分支,分别是:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG。
声明:以下例子内容中涉及到了注册表的真实操作,如果对注册表不甚了解,请不要直接用以下例子进行操作。
1、使用C#打开注册表项
//使用RegistryKey的OpenSubKey()方法打开注册表里的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,注意该方法后面还有一个bool类型的值true,这个代表可写入操作。
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey(@”SOFTWARE\Microsoft\Windows NT\CurrentVersion”,true);
tips:如果注册表项不存在,则抛出异常。
2、使用C#创建注册表项
//使用RegistryKey的CreateSubKey()方法在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion下创建一个名字叫YiShiMei的项。
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.CreateSubKey(@”SOFTWARE\Microsoft\Windows NT\CurrentVersion\YiShiMei”);
tips:如果当前注册表已经存在该项,不影响该操作的执行。
3、使用C#删除注册表项
//使用RegistryKey的DeleteSubKey()方法删除注册表中的SOFTWARE\Microsoft\Windows NT\CurrentVersion\YiShiMei项。
RegistryKey key = Registry.LocalMachine;
key.DeleteSubKey(@”SOFTWARE\Microsoft\Windows NT\CurrentVersion\YiShiMei”,true);
tips:如果该项不存在,则抛出异常。
4、使用C#创建、删除、获取注册表键值
//不管是创建、获取、删除键值,首先都需要打开要设置/创建键值的注册表项
RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey(@”SOFTWARE\Microsoft\Windows NT\CurrentVersion”,true); //该键值须存在
a、设置/创建注册表键值
//使用SetValue()方法设置/创建注册表键值,OpenSubKey()方法中的bool值须为true(可写入)。另外,如果注册表中已存在该键值,执行操作后,会覆盖该键值。
software.SetValue(“阿呆狗”,www.adaigou.net);//给CurrentVersion创建一个键名为阿呆狗,值为www.aiweibk.com的键值
tips:SetValue()方法有三个参数,SetValue(键名,键值,键值类型),键值类型有字符串,二进制,Dword等,不设置键值类型时默认为字符串类型。
b、获取注册表键值
//使用GetValue()方法获取注册表键值,当我们只是要获取键值时,OpenSubKey()方法中的bool值可为false,也可去掉bool值。
string GetValue = software.GetValue(“SystemRoot”).ToString();//获取CurrentVersion项下键名为SystemRoot的键值。
c、删除注册表键值
//使用DeleteValue()方法删除注册表键值,OpenSubKey()方法中的bool值须为true(可写入)。
soft.DeleteValue(“SystemRoot”);//删除注册表中CurrentVersion项下键名为SystemRoot的键值。
tips:要删除的键值名称须存在,否则抛出异常。
结束语:时间仓促,以上内容如有描述不当者,敬请指出。
评论前必须登录!
注册