C#中提供的與注冊表相關的最主要的是兩個類:
Registry 和 RegistryKey,這兩個類屬於Microsoft.Win32命名空間
Registry類包含5個公共的靜態域,分別代表5個基本主鍵分別是:
Registry.ClassesRoot
Registry.CurrentUser
Registry.LocalMachine
Registry.Users
Registry.Current Config
這5個類分別對應注冊表的第二級目錄的五個預定義主鍵
RegistryKey類中提供了對注冊表操作的方法
CreateSubKey //建立一個子鍵
OpenSubKey //打開一個子鍵
DeleteKey //刪除一個子鍵
DeleteKeyTree//刪除一個鍵及其下的全部鍵
GetValue //獲取鍵值
SetValue //設置鍵值
建立子健並設置鍵值的示例:
代碼
private void WTRegedit(string name,string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.CreateSubKey("XXX");
aimdir.SetValue(name,tovalue);
}
刪除一個鍵值的示例:
代碼
private void DeleteRegist(string name)
{
string[] aimnames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
aimnames = software.GetSubKeyNames();
foreach(string aimKey in aimnames)
{
if(aimKey == name)
aimdir.DeleteSubKeyTree(name);
}
}
說到了刪除鍵值就必須關注另外一個問題:系統權限!直接刪除一個鍵會觸發執行未授權的操作異常
這又涉及到另外一個類RegistrySecurity,它屬於System.Security.AccessControl命名空間
RegistrySecurity 對象指定了注冊表項的訪問權限,以及如何審核訪問企圖。對注冊表項的訪問權限體現為規則,每個訪問規則由一個 RegistryAccessRule 對象表示。每個審核規則都由一個 RegistryAuditRule 對象表示
若要將訪問控制安全性從一個注冊表項復制到另一個注冊表項,請使用 RegistryKey.GetAccessControl 方法獲取表示第一個注冊表項的訪問規則和審核規則的 RegistrySecurity 對象,然後使用 RegistryKey.SetAccessControl 方法或一個接受 RegistrySecurity 對象的構造函數將規則指定給第二個注冊表項
示例代碼:
代碼
RegistrySecurity rsy = new Registr