- 浏览: 428769 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
weishuang:
全部无法访问
ArcGIS 资源 -
04023129:
请问一下怎么配置meetme有硬件要求么?
Asterks(软交换)里配置两部简单的SIP软电话 -
jayli426:
请教:
181 正被转接
202 被接受:用于转介
有 ...
所有已知的SIP处理应答状态码 -
ligg5034:
<ww:if test="sftd.equal ...
webwork<ww:if>标签的使用 -
wanggod:
请问我
return (Hello)super.getPort ...
java6 WebServices客户端
名字空间Microsoft.Win32
以下从‘读’‘写’‘删除’‘判断’四个事例实现对注册表的简单操作
1.读取指定名称的注册表的值
2{
3 string registData;
4 RegistryKey hkml = Registry.LocalMachine;
5 RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
6 RegistryKey aimdir = software.OpenSubKey("XXX",true);
7 registData = aimdir.GetValue(name).ToString();
8 return registData;
9}
10以上是读取的注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下的XXX目录中名称为name的注册表值;
11
122.向注册表中写数据
13private void WTRegedit(string name,string tovalue)
14{
15 RegistryKey hklm = Registry.LocalMachine;
16 RegistryKey software = hklm.OpenSubKey("SOFTWARE",true);
17 RegistryKey aimdir = software.CreateSubKey("XXX");
18 aimdir.SetValue(name,tovalue);
19}
20以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下新建XXX目录并在此目录下创建名称为name值为tovalue的注册表项;
21
223.删除注册表中指定的注册表项
23private void DeleteRegist(string name)
24{
25 string[] aimnames;
26 RegistryKey hkml = Registry.LocalMachine;
27 RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
28 RegistryKey aimdir = software.OpenSubKey("XXX",true);
29 aimnames = aimdir.GetSubKeyNames();
30 foreach(string aimKey in aimnames)
31 {
32 if(aimKey == name)
33 aimdir.DeleteSubKeyTree(name);
34 }
35}
36以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中删除名称为name注册表项;
37
384.判断指定注册表项是否存在
39private bool IsRegeditExit(string name)
40{
41 bool _exit = false;
42 string[] subkeyNames;
43 RegistryKey hkml = Registry.LocalMachine;
44 RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
45 RegistryKey aimdir = software.OpenSubKey("XXX",true);
46 subkeyNames = aimdir.GetSubKeyNames();
47 foreach(string keyName in subkeyNames)
48 {
49 if(keyName == name)
50 {
51 _exit = true;
52 return _exit;
53 }
54 }
55 return _exit;
56}
57
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中判断名称为name注册表项是否存在,这一方法在删除注册表时已经存在,在新建一注册表项时也应有相应判断;
注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动、硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等。这就意味着,如果注册表因为某些原因受到了破坏,轻者是视窗系统启动过程出现异常,重者就有可能导致整个系统的完全瘫痪。所以正确的认识注册表,及时的备份注册表,对于视窗用户就显得相当重要。
C#就可以十分方便、简洁的开发出操作注册表的程序。单击"开始/运行",在"打开"的后面填入"regedit"。就可以看到注册表的数据结构了。"主键"是有层次结构的。主键的下一级主键称为该主键的"子键"。每一个主键可以对拥有多个子键。右边的这些值就是所谓的键值了。每一个主键或者子键都可以拥有多个键值。注册表是一个庞大的数据库,在其中每一个主键,每一个键值都赋予了不同的功能。
C#如何读取注册表中的主键和键值:在.Net FrameWork SDK Beta 2版中,有一个Microsoft.Win32的名称空间,在此名称空间中提供了二个用于注册表操作的类:Registry类、RegistryKey类。这二个类都是封闭类,不可以继承。这二个类定义了许多关于注册表的方法和属性,通过调用这二个类,在Visual C#中就可以比较轻松的处理关于注册表的各种操作了。
(1).Registry类:此类主要封装了七个公有的静态域,而这些静态域分别代表这视窗注册表中的七个基本的主键,具体如下所示:
Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键 Registry.User 对应于 HKEY_USER主键 Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键 Registry.DynDa 对应于HKEY_DYN_DATA主键 Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
(2).RegistryKey类:此类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的基本主键,然后通过RegistryKey类,来找其下面的子键和处理具体的操作的。
下面通过一个读取注册表信息例子来具体说明这二个来的用法。
程序设计和运行的环境:Windows 2000服务器版,.Net FrameWork SDK Beta 2版。
在运行程序前的一些必要的处理工作。在程序设计时,主要功能是读取已经存在的主键键值,用户可以新建若干个主键和对应的键值。
程序的主要功能是读取指定主键下面的所有子键和子键拥有的键值,并以列表的形式按层次显示出来。程序设计过程中的重要步骤以及应该注意的一些问题:
程序中读取主键、子键和键值所使用到的方法: 程序中为了读取指定主键下面的子键和子键中拥有的键值,主要使用了RegistryKey类中的四个方法:OpenSubKey,GetSubKeyNames,GetValueNames,GetValue。具体的用法和意思如下:
OpenSubKey ( string name )方法主要是打开指定的子键。 GetSubKeyNames ( )方法是获得主键下面的所有子键的名称,它的返回值是一个字符串数组。 GetValueNames ( )方法是获得当前子键中的所有的键名称,它的返回值也是一个字符串数组。 GetValue ( string name )方法是指定键的键值。
程序中具体的使用语句如下:
RegistryKey hklm = Registry.LocalMachine ; //打开"SYSTEM"子键 RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ; //打开"001"子键 RegistryKey no1 = software.OpenSubKey ( "001" ) ; //打开"002"子键 RegistryKey no2 = no1.OpenSubKey ( "002" ) ;
其中listBox1是程序中定义了的列表名称。
foreach ( string site in no2.GetSubKeyNames ( ) ) //开始遍历由子键名称组成的字符串数组 { listBox1.Items.Add ( site ) ; //在列表中加入子键名称 RegistryKey sitekey = no2.OpenSubKey ( site ) ; //打开此子键 foreach ( string sValName in sitekey.GetValueNames ( ) ) //开始遍历由指定子键拥有的键值名称组成的字符串数组 { listBox1.Items.Add ( "" sValName ": " sitekey.GetValue ( sValName ) ) ; //在列表中加入键名称和对应的键值 } }
通过以上的论述,我们可以得到程序的源程序代码,具体如下:
using System ; using System.Drawing ; using System.Collections ; using System.ComponentModel ; using System.Windows.Forms ; using System.Data ; using Microsoft.Win32 ; public class Form1 : Form { private System.ComponentModel.Container components ; private ListBox listBox1 ; private Button button1 ; public Form1 ( ) { InitializeComponent ( ) ; } //清除在程序中使用过的资源 public override void Dispose ( ) { base.Dispose ( ) ; components.Dispose ( ) ; } //初始化程序中使用到的组件 private void InitializeComponent ( ) { this.components = new System.ComponentModel.Container ( ) ; this.button1 = new Button ( ) ; this.listBox1 = new ListBox ( ) ; button1.Location = new System.Drawing.Point ( 16 , 320 ) ; button1.Size = new System.Drawing.Size ( 75 , 23 ) ; button1.TabIndex = 0 ; button1.Text = "读取注册表" ; button1.Click = new System.EventHandler( this.button1_Click ) ; listBox1.Location = new System.Drawing.Point ( 16 , 32 ) ; listBox1.Size = new System.Drawing.Size ( 496 , 264 ) ; listBox1.TabIndex = 1 ; this.Text = "读取主测表信息" ; this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ; this.ClientSize = new System.Drawing.Size ( 528 , 357 ) ; this.Controls.Add( this.listBox1 ) ; this.Controls.Add ( this.button1 ) ; } // protected void button1_Click ( object sender , System.EventArgs e ) { listBox1.Items.Clear ( ) ; RegistryKey hklm = Registry.LocalMachine ; RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ; //打开"SYSTEM"子键 RegistryKey no1 = software.OpenSubKey ( "001" ) ; //打开"001"子键 RegistryKey no2 = no1.OpenSubKey ( "002" ) ; //打开"002"子键 foreach ( string site in no2.GetSubKeyNames ( ) ) //开始遍历由子键名称组成的字符串数组 { listBox1.Items.Add ( site ) ; //在列表中加入子键名称 RegistryKey sitekey = no2.OpenSubKey ( site ) ; //打开此子键 foreach ( string sValName in sitekey.GetValueNames ( ) ) //开始遍历由指定子键拥有的键值名称组成的字符串数组 { listBox1.Items.Add ( "" sValName ": " sitekey.GetValue ( sValName ) ) ; //在列表中加入键名称和对应的键值 } } } // public static void Main ( ) { Application.Run ( new Form1 ( ) ) ; } }
用C#读取注册表中的注册信息是通过名称空间Micorsoft.Win32中的二个类来实现的。在这二个类中还定义了对注册表信息的删除、修改和重命名的一些方法。这些方法比起本文介绍的读取方法、打开方法来说,更具有破坏性,但也更实用。由于注册表在视窗系统中的重要作用,所以在每一次对注册表进行操作之前,一定要备份,在操作的时候也要非常小心,因为一次的误操作都可能导致系统崩溃。
发表评论
-
Visual studio 2010无法安装Silverlight4 Tools的解决办法
2011-02-28 12:05 2194如果你也碰到这个问题,那么算你运气好;昨日下了园子里vs2 ... -
C# winform32位加密算法
2008-06-19 15:07 1387private string MD5(string sourc ... -
.net下的SHA-1与MD5加密算法
2008-06-19 15:07 2007//SHA-1算法string password = Syst ... -
用C#写的自定义数据库操作类
2008-06-19 15:06 1748using System;using System.Data; ... -
COM+数据库连接池
2008-06-19 15:05 1757连接池添加以下引用Syst ... -
数据库、服务器设置
2008-06-19 15:05 972private ConnClass.SqlConn sql; ... -
起泡排序与简单排序法
2008-06-19 15:03 973using System; namespace 排序算法{cl ... -
顺序查找与二分查找
2008-06-19 15:02 1184using System; namespace 查找算法{cl ... -
正则表达式应用范例
2008-06-19 15:02 889The following example shows the ... -
序列化与反序列化
2008-06-19 15:01 1271poorServer 代码 using System ... -
获取本机和远程计算机IP及MAC地址
2008-06-19 15:00 4737利用dns类和WMI规范获取I ... -
DataList里面用C#实现自定义分页
2008-06-19 14:59 1706PagedDataSource pds=new Pa ... -
ASP.NET里面用C#实现发送邮件
2008-06-19 14:59 1884if(TextBoxNumber1.Text==" ... -
如何控制DataGrid里的内容换行与不换行
2008-06-19 14:58 1874<FONT size=2><%@ Page ... -
在C#窗体应用程序中载入Web页
2008-06-19 14:57 4607用AxWebBrowser的准备 "工具箱&quo ... -
VS2005[C#] 操作 Excel 2003
2008-06-19 14:56 2557using System;using System.Colle ... -
VS C# 2008里只让应用程序只运行一个实例
2008-06-19 14:55 1505using System;using System.Colle ... -
VS C# 2008导入到Excel 2007
2008-06-19 14:54 2622string path = System.Environmen ... -
VS C# 2008导入到xml
2008-06-19 14:53 1269//创建MobileBackup.xml文件 ... -
VS C# 2008从xml里读取数据
2008-06-19 14:53 1236//从xml文件中读取发件箱信息 private ...
相关推荐
C#对注册表进行增删改查操作
C#操作注册表代码C#操作注册表代码C#操作注册表代码C#操作注册表代码C#操作注册表代码C#操作注册表代码C#操作注册表代码C#操作注册表代码C#操作注册表代码
C#操作注册表C#操作注册表C#操作注册表C#操作注册表C#操作注册表
利用C#操作Windows操作系统注册表基类 来源:红黑联盟
C#操作注册表实现软件注册 判断软件是否注册 注册信息存入注册表
c#操作注册表(新人们请看,高手们指教)
C#操作注册表实现程序随系统开机自动启动,需要.net 2.0支持,需要管理员权限才能操作注册表,支持xp系统; 在win7 win10下由于UAC权限问题仅支持不需要管理员权限的程序随系统自动启动。
作为编程开发人员,我们有必要了解注册表...下面我们就来用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置值、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。
C#注册表\C#操作注册表.doc
c#对注册表的操作,涵盖的一些常用的基本知识
C#操作注册表相关说明.doc C#操作注册表相关说明.doc C#操作注册表相关说明.doc C#操作注册表相关说明.doc
C#注册表操作类(完整版),C#注册表操作类(完整版); C#注册表操作类(完整版)!
c#操作注册表的相关要点 c#操作注册表的相关要点 c#操作注册表的相关要点 c#操作注册表的相关要点 c#操作注册表的相关要点 c#操作注册表的相关要点 c#操作注册表的相关要点
C#操作注册表键值实现隐藏或显示桌面上的图标 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
利用C#操作注册表一、项的创建、打开和删除二、键值的创建(修改)、读取和删除三、判断项和键是否存在
c# 操作注册表+用WMI读取硬件信息+操作EXCEL实例 我自己在开发中用的逻辑!绝对实用,新手可以看看,大侠飘过.... 如果有问题 可以发邮件给我 on_my_way20xx@163.com
C#操作注册表源码--适合初学者参考 学习之作,适合与我一样的初学者入门参考学习。 并在这里恳请大神指导下我的学习,谢谢
操作注册表操作注册表操作注册表操作注册表操作注册表操作注册表操作注册表操作注册表操作注册表