Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/11 9:23:40
C#教程:向注册表写入信息

C#教程:向注册表写入信息

向注册表写入信息

为了使编程人员能够快速地向注册表写入信息,Registry类将注册表中7大主键封装为公有的静态域,而这些静态域分别代表着注册表中的7个基本的主键,这样在向注册表中写入信息时就可以通过Registry类的7个公有的静态域与注册表——映射。具体描述如表1所示。

表1 Registry类封装的7个公有的静态域列表



通过Registry类中的GetValue方法、SetValue方法可以实现向注册表中写入信息。

(1)GetValue 方法。检索与指定的注册表项中的指定名称关联的值。如果在指定的项中未找到该名称,则返回用户提供的默认值;或者,如果指定的项不存在,则返回空引用。

语法:

public static Object GetValue

(

string keyName,

string valueName,

Object defaultValue

)

参数说明如下。

keyName:以有效注册表根(如“HKEY_CURRENT_USER”)开头的键的完整注册表路径。

ValueName:名称/值对的名称。

DefaultValue:当 name 不存在时,返回的值。

返回值:如果由 keyName 指定的子项不存在,则返回空引用;否则,返回与 valueName 关联的值;或者,如果未找到 valueName,则返回 defaultValue。

例如,通过GetValueNames方法检索“HKEY_CURRENT_USERAppEventsEventLabels”子键下包含的所有子项,然后检索包含与此名称关联的值。代码如下:

RegistryKey rk = Registry.CurrentUser;

RegistryKey sys = rk.OpenSubKey(@"AppEventsEventLabels");

foreach(string str in sys.GetSubKeyNames())

{

RegistryKey sikey = sys.OpenSubKey(str);//打开子键

foreach (string sVName in sikey.GetValueNames())

{

this.listBox1.Items.Add(sikey.GetValue(sVName));

}

}

(2)SetValue方法。设置指定的注册表项的指定名称/值对。如果指定的项不存在,则创建该项。

语法:

public static void SetValue

(

string keyName,

string valueName,

Object value

)

参数说明如下。

keyName:以有效注册表根(如“HKEY_CURRENT_USER”)开头的键的完整注册表路径。

ValueName:名称/值对的名称。

Value:要存储的值。

例如,通过SetValue方法在“HKEY_CURRENT_CONFIG”键下创建一个名为mrsoft的子键,然后在mrsoft子键下添加一个名为mr的键值项同时为这个键值项添加键值(hywork),代码如下:

Registry.SetValue("HKEY_CURRENT_CONFIGmrsoft", "mr", "hywork");

示例

写入注册表

向“HKEY_CURRENT_CONFIG”键下写入信息,程序运行效果如图1所示。



图1 写入注册表

首先确定要对7个基本主键的哪一个主键进行操作,这里以 “HKEY_CURRENT_CONFIG”为例,找到要操作的主键后便可以通过Registry类的SetValue方法将信息写入注册表中,程序代码如下。

private void button1_Click(object sender, EventArgs e)

{

try

{

string strPath = "HKEY_CURRENT_CONFIG";//设默认值

string keyName = strPath + "" + this.textBox2.Text.Trim().ToString();

object obj = (object)this.textBox4.Text.Trim();

string strName = this.textBox3.Text.Trim().ToString();

Registry.SetValue(keyName, strName, obj, RegistryValueKind.String);


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759