用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置值、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。准备工作:
1:要操作注册表,我们必须要引入必要的命名空间:
在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~
2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支:ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig如:
-
RegistryKeykey=Registry.LocalMachine;
3:在操作的过程中涉及到子分支,要用进行深入,单个会报错!4:最后要调用RegistryKey对象的Close()关闭对注册表的修改~~~5:以下我们的例子都是在LocalMachine分支下,请注意。一:注册表项的创建,打开与删除
1:创建:创建注册表项主要用到RegistryKey 的CreateSubKey()方法。如:
-
RegistryKeykey=Registry.LocalMachine;
-
RegistryKeysoftware=key.CreateSubKey(softwaretest);
在HKEY_LOCAL_MACHINESOFTWARE下新建名为test的注册表项。如果已经存在则不影响!2:打开:打开注册表项主要用到RegistryKey 的OpenSubKey()方法。如:
-
RegistryKeykey=Registry.LocalMachine;
-
RegistryKeysoftware=key.OpenSubKey(softwaretest,true);
注意该方法后面还可以有一个布尔型的参数,true表示可以写入。注意,如果该注册表项不存在,这调用这个方法会抛出异常3:删除:删除注册表项主要用到RegistryKey 的DeleteSubKey()方法。如:
-
RegistryKeykey=Registry.LocalMachine;
-
key.DeleteSubKey(softwaretest,true);
-
key.Close();
注意,如果该注册表项不存在,这调用这个方法会抛出异常二:键值的创建(设置值、修改),读取和删除
1:创建(设置值、修改):对键值的创建修改等操作主要用到RegistryKey 的SetValue()方法
-
RegistryKeykey=Registry.LocalMachine;
-
RegistryKeysoftware=key.OpenSubKey(softwaretest,true);该项必须已存在
-
software.SetValue(test,园);
在HKEY_LOCAL_MACHINESOFTWAREtest下创建一个名为“test”,值为“园”的键值。如果该键值原本已经存在,则会修改替换原来的键值,如果不存在则是创建该键值。注意:SetValue()还有第三个参数,主要是用于设置键值的类型,如:字符串,二进制,Dword等等~~默认是字符串。如:
-
software.SetValue(test,0,RegistryValueKind.DWord);
-
ey.Close();
2:读取:
-
stringinfo=;
-
RegistryKeyKey;
-
Key=Registry.LocalMachine;
-
myreg=Key.OpenSubKey(softwaretest);
-
myreg=Key.OpenSubKey(softwaretest,true);
-
info=myreg.GetValue(test).ToString();
-
myreg.Close();
info结果为:园3:删除:
-
RegistryKeydelKey=Registry.LocalMachine.OpenSubKey(Softwaretest,true);
-
delKey.DeleteValue(test);
-
delKey.Close();
细心的读者可能发现了第二个例子中OpenSubKey()方法参数与其他例子的不同。如果你要修改键值,包括创建、设置、删除键值等都要在方法后面加个布尔参数,设置为true,表示可写可改;如果仅仅只是读取键值可以不加,此时可写关闭,你不能再往里写值(当然,你要加也可以true)!还有读者提到读写默认键值的问题,主要在设置、读取的方法中将键名置空则就是对默认键值的操作。如:
在HKEY_LOCAL_MACHINESOFTWAREtest修改默认键值的值为“园”。读取类似!另外,默认的键值是不能删除的,所以不要用DeleteValue()方法去删除,会抛出异常的!三:判断注册表项是否存在
-
privateboolIsRegeditItemExist()
-
{
-
string[]subkeyNames;
-
RegistryKeyhkml=Registry.LocalMachine;
-
RegistryKeysoftware=hkml.OpenSubKey(SOFTWARE);
-
RegistryKeysoftware=hkml.OpenSubKey(SOFTWARE,true);
-
subkeyNames=software.GetSubKeyNames();
-
-
foreach(stringkeyNameinsubkeyNames)遍历整个数组
-
{
-
if(keyName==test)判断子项的名称
-
{
-
hkml.Close();
-
returntrue;
-
}
-
}
-
hkml.Close();
-
returnfalse;
-
}
四:判断键值是否存在
-
privateboolIsRegeditKeyExit()
-
{
-
string[]subkeyNames;
-
RegistryKeyhkml=Registry.LocalMachine;
-
RegistryKeysoftware=hkml.OpenSubKey(SOFTWAREtest);
-
RegistryKeysoftware=hkml.OpenSubKey(SOFTWAREtest,true);
-
subkeyNames=software.GetValueNames();
-
-
foreach(stringkeyNameinsubkeyNames)
-
{
-
if(keyName==test)判断键值的名称
-
{
-
hkml.Close();
-
returntrue;
-
}
-
}
-
hkml.Close();
-
returnfalse;
-
}
转自:http://heisetoufa.iteye.com/blog/400466
分享到:
相关推荐
C#操作INI文件,读写注册表,可以完成选择INI文件、写入INI文件、读取ini文件。 在读取INI时,请先输入section和key的值再点击,可以读取出INI文件节点中各个值的详细信息, 作为一个大型的应用,配置文件的写入非常...
C#操作IE浏览器的注册表,添加节点,删除键值,删除所有键值,设置注册表键值,
在读取INI时,请先输入section和key的值再点击,可以读取出INI文件节点中各个值的详细信息,作为一个大型的应用,配置文件的写入非常重要,希望通过此小程序,让您学会以C#操作INI文件、更改参数等。^_^ 大雄制作 ^_...
本文实例讲述了C#实现读取注册表监控当前操作系统已安装软件变化的方法。... /*对注册表节点Software/Microsoft/Windows/CurrentVersion/Uninstall下的内容进行操作。 RegistryKey Registry 为注册表操作类*/
0664 判断文件是否存在 411 0665 创建一个文件用于写入UTF-8编码的文本 411 0666 OpenRead方法打开现有文件并读取 412 0667 打开现有UTF-8编码文本文件并进行读取 412 0668 OpenWrite方法打开现有文件并...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
摘要:C#源码,系统相关,注册表,树控菜单 C#浏览注册表内容的实例源代码,我觉得是个不错的注册表操作实例程序,通过本实例您可以掌握使用C#...程序虽然小,但应用到的适应非常实用,C#注册表操作源码下载分享给大家。
Godot Mono自定义资源注册表插件这是一个Godot C#插件,用于注册Godot的...如何使用添加/删除自定义C#资源/节点要添加自定义C#资源,请执行以下操作: 在扩展Godot.Resource的新文件中创建一个C#类。 此类必须
实例023 利用if…else语句判断分数是否及格 实例024 利用switch语句判断时间 实例025 利用while语句判断大小 实例026 打印九九乘法表 实例027 使用break语句提前退出循环语句 实例028 使用continue语句转移至循环...
5、TreeView使用,包括多级树的创建、树节点的拖动、3鼠标右键选中树节点 6、控件数据绑定,及CommandBuilder使用 7、使用线程将节点加入到TreeView 8、使用线程将DataGridView数据导出到Excel 9、简单报表实例,及...
83 <br>0125 按要求生成指定位数编号 83 <br>0126 确定两字符串是否相等 84 <br>0127 判断两字符串中指定子串是否相等 84 <br>0128 判断字符串是否为日期格式 85 <br>0129 清除字符串中指定...
代码段是可重用的、面向任务的代码块。 注意:为了让 Visual Studio 能够识别这些代码段的位置,您需要将安装...这些代码段默认情况下随 Visual Studio 一起安装,且应仅用于在 C# 重构代码段被损坏或删除时进行还原。
实例023 利用if…else语句判断分数是否及格 34 实例024 利用switch语句判断时间 35 实例025 利用while语句判断大小 36 实例026 打印九九乘法表 38 实例027 使用break语句提前退出循环语句 39 实例028 使用continue...
实例212 检查文件是否存在 300 实例213 提取指定文件夹目录 301 6.3 修改文件 302 实例214 更改文件名称 302 实例215 修改文件属性 303 实例216 修改文件及目录的名称 304 6.4 文件目录 305 实例217 获得临时...
实例212 检查文件是否存在 300 实例213 提取指定文件夹目录 301 6.3 修改文件 302 实例214 更改文件名称 302 实例215 修改文件属性 303 实例216 修改文件及目录的名称 304 6.4 文件目录 305 实例217 获得临时...