相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了。这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项里面写入自己的启动键值来达到自启动的目的,有些病毒还会修改注册表里面来映像劫持杀毒软 件,这是破坏系统的第一步。同时,大多软件(软件的序列号和信息)和硬件信息、系统信息、安全模式等等设置都保存在这里,因此系统的健康在很大程度上要依 赖注册表的健康。 作为编程开发人员,我们有必要了解注册表并学会操作注册表。下面我们就来用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置值、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。准备工作:1:要操作注册表,我们必须要引入必要的命名空间:
C#代码 <embed type="application/x-shockwave-Flash" width="14" height="15" src="http://www.VEvb.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=using%20Microsoft.Win32%3B%0A" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支:ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig如:RegistryKey key = Registry.LocalMachine;3:在操作的过程中涉及到子分支,要用//进行深入,单个/会报错!4:最后要调用RegistryKey对象的Close()关闭对注册表的修改~~~5:以下我们的例子都是在LocalMachine分支下,请注意。一:注册表项的创建,打开与删除1:创建:创建注册表项主要用到RegistryKey 的CreateSubKey()方法。如:
C#代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.VEvb.com/Javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=RegistryKey%20key%20%3D%20Registry.LocalMachine%3B%0A%0ARegistryKey%20software%20%3D%20key.CreateSubKey(%22software%5C%5Ctest%22)%3B%20%20%0A%0A%2F%2F%E5%9C%A8HKEY_LOCAL_MACHINE%5CSOFTWARE%E4%B8%8B%E6%96%B0%E5%BB%BA%E5%90%8D%E4%B8%BAtest%E7%9A%84%E6%B3%A8%E5%86%8C%E8%A1%A8%E9%A1%B9%E3%80%82%E5%A6%82%E6%9E%9C%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%E5%88%99%E4%B8%8D%E5%BD%B1%E5%93%8D%EF%BC%81%0A" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>2:打开:打开注册表项主要用到RegistryKey 的OpenSubKey()方法。如:
C#代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.VEvb.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=RegistryKey%20key%20%3D%20Registry.LocalMachine%3B%0A%0ARegistryKey%20software%20%3D%20key.OpenSubKey(%22software%5C%5Ctest%22%2Ctrue)%3B%20%20%0A%0A%2F%2F%E6%B3%A8%E6%84%8F%E8%AF%A5%E6%96%B9%E6%B3%95%E5%90%8E%E9%9D%A2%E8%BF%98%E5%8F%AF%E4%BB%A5%E6%9C%89%E4%B8%80%E4%B8%AA%E5%B8%83%E5%B0%94%E5%9E%8B%E7%9A%84%E5%8F%82%E6%95%B0%EF%BC%8Ctrue%E8%A1%A8%E7%A4%BA%E5%8F%AF%E4%BB%A5%E5%86%99%E5%85%A5%E3%80%82%0A" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>注意,如果该注册表项不存在,这调用这个方法会抛出异常3:删除:删除注册表项主要用到RegistryKey 的DeleteSubKey()方法。如:
C#代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.VEvb.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=RegistryKey%20key%20%3D%20Registry.LocalMachine%3B%0A%0Akey.DeleteSubKey(%22software%5C%5Ctest%22%2Ctrue)%3B%20%20%20%20%2F%2F%E8%AF%A5%E6%96%B9%E6%B3%95%E6%97%A0%E8%BF%94%E5%9B%9E%E5%80%BC%EF%BC%8C%E7%9B%B4%E6%8E%A5%E8%B0%83%E7%94%A8%E5%8D%B3%E5%8F%AF%0A%0Akey.Close()%3B%0A" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>注意,如果该注册表项不存在,这调用这个方法会抛出异常二:键值的创建(设置值、修改),读取和删除1:创建(设置值、修改):对键值的创建修改等操作主要用到RegistryKey 的SetValue()方法
C#代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.VEvb.com/javascripts/syntaxhighlighter/cl新闻热点
疑难解答