C#對註冊表的操作

來源:互聯網
上載者:User

C#中提供的與註冊表相關的最主要的是兩個類:

RegistryRegistryKey,這兩個類屬於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 RegistrySecurity();

RegistryAccessRule rar=new RegistryAccessRule(Environment.UserDomainName+
"\\"+Environment.UserName,RegistryRights.ReadKey|RegistryRights.WriteKey|
RegistryRights.Delete,InheritanceFlags.ContainerInherit,PropagationFlags.None,
AccessControlType.Allow);

rsy.AddAccessRule(rar);

RegistryKey cu = Registry.CurrentUser;

RegistryKey rk = cu.CreateSubKey("test1", RegistryKeyPermissionCheck.ReadWriteSubTree, rsy);

RegistryKey rky = rk.CreateSubKey("test2",RegistryKeyPermissionCheck.ReadWriteSubTree);

cu.DeleteSubKeyTree("test1");

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.