VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#向注册表写入信息

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  熟悉计算机的读者都明白注册表的重要性,因为注册表内存储着重要的配置信息,这个重要信息的写入可以通过Registry类实现。

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

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

  静态域
  说明
  ClassesRoot
  定义文档的类型(或类)以及与那些类型关联的属性。该字段读取Windows注册表基项HKEY_CLASSES_ROOT
  CurrentConfig
  包含有关非用户特定的硬件的配置信息。该字段读取Windows注册表基项 HKEY_CURRENT_CONFIG
  CurrentUser
  包含有关当前用户首选项的信息。该字段读取Windows注册表基项 HKEY_CURRENT_USER
  DynData
  包含动态注册表数据。该字段读Windows注册表基项 HKEY_DYN_DATA
  LocalMachine
  包含本地计算机的配置数据。该字段读取Windows注册表基项 HKEY_LOCAL_MACHINE
  PerformanceData
  包含软件组件的性能信息。该字段读取Windows注册表基项 HKEY_PERFORMANCE_DATA

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

  (1)GetValue 方法

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

  语法:

publicstaticObjectGetValue 
(
 stringkeyName,
 stringvalueName,
 ObjectdefaultValue
)

 

  参数:

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

  ValueName:名称/值对的名称。

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

  返回值:

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

  例如,通过GetValueNames方法检索"HKEY_CURRENT_USERAppEventsEventLabels"子键下包含的所有子项,然后检索包含与此名称关联的值;

RegistryKeyrk=Registry.CurrentUser;
      RegistryKeysys=rk.OpenSubKey(@"AppEventsEventLabels");
      foreach(stringstrinsys.GetSubKeyNames())
      {
        RegistryKeysikey=sys.OpenSubKey(str);//打开子键
        foreach(stringsVNameinsikey.GetValueNames())
        {
          this.listBox1.Items.Add(sikey.GetValue(sVName));
        }
      }

  (2)SetValue方法

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

  语法:

publicstaticvoidSetValue 
(
 stringkeyName,
 stringvalueName,
 Objectvalue
)

  参数:

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

  ValueName:名称/值对的名称。

  Value:要存储的值。

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

 

Registry.SetValue(“HKEY_CURRENT_CONFIGmrsoft”,“mr”,“hywork”);

  示例 写入注册表

  向“HKEY_CURRENT_CONFIG”键下写入信息,。

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

privatevoidbutton1_Click(objectsender,EventArgse)
    {
      
      try
      {
        stringstrPath="HKEY_CURRENT_CONFIG";//设默认值
        stringkeyName=strPath+""+this.textBox2.Text.Trim().ToString();
        objectobj=(object)this.textBox4.Text.Trim();
        stringstrName=this.textBox3.Text.Trim().ToString();
        Registry.SetValue(keyName,strName,obj,RegistryValueKind.String);
        MessageBox.Show("写入成功");
      }
      catch
      {
        return;
      }
    }

 

 

  参数:

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

  ValueName:名称/值对的名称。

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

  返回值:

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

  例如,通过GetValueNames方法检索"HKEY_CURRENT_USERAppEventsEventLabels"子键下包含的所有子项,然后检索包含与此名称关联的值;

RegistryKeyrk=Registry.CurrentUser;
      RegistryKeysys=rk.OpenSubKey(@"AppEventsEventLabels");
      foreach(stringstrinsys.GetSubKeyNames())
      {
        RegistryKeysikey=sys.OpenSubKey(str);//打开子键
        foreach(stringsVNameinsikey.GetValueNames())
        {
          this.listBox1.Items.Add(sikey.GetValue(sVName));
        }
      }

  (2)SetValue方法

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

  语法:

publicstaticvoidSetValue 
(
 stringkeyName,
 stringvalueName,
 Objectvalue
)

  参数:

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

  ValueName:名称/值对的名称。

  Value:要存储的值。

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

 

Registry.SetValue(“HKEY_CURRENT_CONFIGmrsoft”,“mr”,“hywork”);

  示例 写入注册表

  向“HKEY_CURRENT_CONFIG”键下写入信息,。

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

privatevoidbutton1_Click(objectsender,EventArgse)
    {
      
      try
      {
        stringstrPath="HKEY_CURRENT_CONFIG";//设默认值
        stringkeyName=strPath+""+this.textBox2.Text.Trim().ToString();
        objectobj=(object)this.textBox4.Text.Trim();
        stringstrName=this.textBox3.Text.Trim().ToString();
        Registry.SetValue(keyName,strName,obj,RegistryValueKind.String);
        MessageBox.Show("写入成功");
      }
      catch
      {
        return;
      }
    }

 



相关教程