注册表操作

C#中使用Registry和RegistryKey类进行注册表操作,它们都位于Microsoft.Win32命名空间,因此,要使用它们请加入using Microsoft.Win32引用

 

在本地MSDN中就有详细的关于这两个类的中文参考

 

以下是一些操作知识点

 

Registry:

静态类,提供表示 Windows 注册表中的根项的 RegistryKey 对象,并提供访问项/值对的 static 方法。在 (.NET Framework 2.0 版中,Registry 类还包含从注册表项设置和检索值的 staticGetValue 和 SetValue 方法。每次使用这两种方法时,它们都会打开和关闭注册表项,所以,当您访问大量值时,使用这两种方法不如使用 RegistryKey 类中的类似方法。)

 

RegistryKey:
RegistryKey没有构造函数,也就是说不能使用 new RegistryKey(...),它由Registry或RegistryKey的OpenSubKey和CreateSubKey返回;

 

OpenSubKey和CreateSubKey支持相对和绝对路径,我们可以直接给出从HKCU开始到达指定键的完整路径;(没搞明白)

 

RegistryKey的CreateSubKey方法和SetValue方法(没有CreateValue方法)有一个特性,如果指定的键或值不存在,系统将会创建(对于CreateSubKey,即使中定空了好几层,仍然会一一创建)一个并打开它(对于CreateSubKey是可读写方式),对于CreateSubKey,哪果指定键存在,则会直接打开,不会重写其内容;

 

OpenSubKey和GetValue方法,如果指定的键或值不存在,则返回null, 此外OpenSubKey还有一个writeable参数,指定以哪种方式打开指定键,默认是false,即只读;

 

RegistryKey的CreateSubKey和OpenSubKey方法都再次返回一下RegistryKey对象;

 

DeleteSubKey不能删除有子键的键,对于有子键的键的DeleteSubKey调用,将引起一个异常,如果要删除有子键的键,请使用DeleteSubKeyTree

示例代码:

第一句直接使用了CreateSubKey,路径字符串不能是@"/Software/ProductName",这将返回一个路径无效异常,但可以是@"Software/ProductName/";第二句的GetValue用了为空时的缺省返回值,注意转换部分,这很容易出错。最后不要忘记关闭打开的键;

 

 参考资料:

 

.net精华:C#中对注册表的操作

http://pcedu.pconline.com.cn/empolder/net/0412/508782.html

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值