c# 注册表的使用RegistryKey(转)


转:http://blog.csdn.net/wyzsc/article/details/6536015

微软的帮助

Registry..::.GetValue 方法,

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

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

 

 

C#程序开发范例宝典

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 
 9 using Microsoft.Win32;
10 namespace Ex08_01
11 {
12     public partial class Form1 : Form
13     {
14         public Form1()
15         {
16             InitializeComponent();
17         }
18 
19         private void button1_Click(object sender, EventArgs e)
20         {
21             try
22             {
23                 string strPath = "HKEY_CURRENT_CONFIG//HyWork";//设默认值 
24                 object objName = (object)this.textBox1.Text.Trim();
25                 object objPwd = (object)this.textBox2.Text.Trim();
26                 Registry.SetValue(strPath, "用户名", objName, RegistryValueKind.String);
27                 Registry.SetValue(strPath, "密码", objPwd, RegistryValueKind.String);
28                 this.label3.Text = "恭喜,信息以成功写入注删表";
29             }
30             catch
31             {
32                 return;
33             }
34         }
35         private void button2_Click(object sender, EventArgs e)
36         {
37             try
38             {
39                 RegistryKey rk = Registry.CurrentConfig.OpenSubKey("HyWork");
40                 string strName = rk.GetValue("用户名", "Null").ToString();
41                 string strPwd = rk.GetValue("密码", "Null").ToString();
42                 MessageBox.Show("用户名:" + strName + "/r/n" + "密  码:"+strPwd);
43                 this.label3.Text = "恭喜,信息以成功提取";
44             }
45             catch
46             {
47                 return;
48             }
49         }
50     }
51 }

 

 

 

以下从‘读’‘写’‘删除’‘判断’四个事例实现对注册表的简单操作 

1.读取指定名称的注册表的值 

1 private string GetRegistData(string name) 
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 } 

 以上是读取的注册表中HKEY_LOCAL_MACHINE/SOFTWARE目录下的XXX目录中名称为name的注册表值; 
2.向注册表中写数据 

1 private void WTRegedit(string name,string tovalue) 
2 { 
3     RegistryKey hklm = Registry.LocalMachine; 
4     RegistryKey software = hklm.OpenSubKey("SOFTWARE",true); 
5     RegistryKey aimdir = software.CreateSubKey("XXX"); 
6     aimdir.SetValue(name,tovalue); 
7 }

以上是在注册表中HKEY_LOCAL_MACHINE/SOFTWARE目录下新建XXX目录并在此目录下创建名称为name值为tovalue的注册表项; 
3.删除注册表中指定的注册表项 

 1 private void DeleteRegist(string name) 
 2 { 
 3     string[] aimnames; 
 4     RegistryKey hkml = Registry.LocalMachine; 
 5     RegistryKey software = hkml.OpenSubKey("SOFTWARE",true); 
 6     RegistryKey aimdir = software.OpenSubKey("XXX",true); 
 7     aimnames = aimdir.GetSubKeyNames(); 
 8     foreach(string aimKey in aimnames) 
 9     { 
10         if(aimKey == name) 
11         aimdir.DeleteSubKeyTree(name); 
12     } 
13 }

以上是在注册表中HKEY_LOCAL_MACHINE/SOFTWARE目录下XXX目录中删除名称为name注册表项; 
4.判断指定注册表项是否存在 

private bool IsRegeditExit(string name) 
{ 
    bool _exit = false; 
    string[] subkeyNames; 
    RegistryKey hkml = Registry.LocalMachine; 
    RegistryKey software = hkml.OpenSubKey("SOFTWARE",true); 
    RegistryKey aimdir = software.OpenSubKey("XXX",true); 
    subkeyNames = aimdir.GetSubKeyNames(); 
    foreach(string keyName in subkeyNames) 
    { 
        if(keyName == name) 
        { 
            _exit = true; 
            return _exit; 
        } 
     } 
    return _exit; 
} 

以上是在注册表中HKEY_LOCAL_MACHINE/SOFTWARE目录下XXX目录中判断名称为name注册表项是否存在,这一方法在删除注册表时已经存在,在新建一注册表项时也应有相应判断。

 

 

http://blog.csdn.net/greenerycn/archive/2007/03/06/1522616.aspx

 

C#读写注册表

 

一直想写个c#版的去箭头工具,今天特意写了一下,了解了.net下操作注册表的方法.

先说说.net下的函数:

        NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:RegistryRegistryKey。这两个类都是密封类不允许被继承。下面我们分别来介绍这两个类。         Registry类提供了7个公共的静态域,分别代表7个基本主键(其中两个在XP系统中没有)分别是: 

        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主键

        RegistryKey类中提供了对注册表操作的方法。要注意的是操作注册表必须符合系统权限,否则将会抛出错误。               

创建子键的方法原型为:                             

    public RegistryKey CreateSubKey(string sunbkey);                

    参数sunbkey表示要创建的子键的名称或路径名。创建成功返回被创建的子键,否则返回null。         

打开子键的方法原型为:                             

    public RegistryKey OpenSubKey(string name);                             

    public RegistryKey OpenSubKey(string name,bool writable);                  

    参数name表示要打开的子键名或其路径名,参数writable表示被打开的子键是否允许被修改,第一个方法打开的子键是只读的。          

删除子键的方法原型为:                             

    public void DeleteSubKey(string subkey);                            

     该方法用于删除指定的主键。如果要删除的子键还包含主键则删除失败,并返回一个异常,如果要彻底删除该子键极其目录下的子键可以用方法DeleteSubKeyTree,该方法原型如下:                             

  public void DeleteSunKeyTree(string subkey);          

读取键值的方法原型如下:                            

     public object GetValue(string name);                             

    public object GetValue(string name,object defaultValue);                        

     参数name表示键的名称,返回类型是一个object类型,如果指定的键不存在则返回null。如果失败又不希望返回的值是null则可以指定参数defaultValue,指定了参数则在读取失败的情况下返回该参数指定的值。           

设置键值的方法原型如下:                             

    public object SetValue(string name,object value);           

删除键值的方法原型如下:                             

    public void DeleteValue(string name); 

下面是去除快捷方式上的箭头的源代码:

using  System;
using  System.Collections.Generic;
using  System.Text;
using  Microsoft.Win32;
// 学习c#操作注册表
namespace  ConsoleApplication2 {     
class  Program     {         
  static   void  Main( string [] args)        
   {             
    RegistryKey  test_rk;             
    Console.WriteLine( " ********************************************************* " );             
    Console.WriteLine( "         快捷方式箭头去除工具 2007 " );             
    Console.WriteLine( " ********************************************************* " );            
     test_rk  =  Registry.ClassesRoot.OpenSubKey( " lnkfile " , true );             
    if  (test_rk.GetValue( " IsShortcut " ==   null )            
     {                 
      Console.WriteLine( " 快捷方式上的箭头已去除! " );             
    }                
    else            
     {                
       test_rk.DeleteValue( " IsShortcut " );                 
      Console.WriteLine( " 执行成功!请注销后查看效果. " );                  
    }            
    test_rk.Close(); //不要忘记哦             
    Console.Read();             
  }             
  }     
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM