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