轉: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名字空間中提供了兩個類來操作注冊表:Registry和RegistryKey。這兩個類都是密封類不允許被繼承。下面我們分別來介紹這兩個類。 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);
下面是去除快捷方式上的箭頭的源代碼:
// 學習c#操作注冊表