Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)qqpublished 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);
赞