2011-10-28 73 views
5

下面是我們如何manually分配權限給註冊表項:編程權限分配給註冊表子項

權限分配給註冊表項

  • 打開註冊表編輯器。點擊您想要分配權限的密鑰。

  • 在編輯菜單上,單擊權限。

  • 分配訪問權限級別選擇的重點如下:

  • 要授予讀取密鑰內容的用戶權限,但不能保存 對文件所做的任何更改,在權限名稱,閱讀, 選擇允許複選框。

  • 要授予用戶權限打開,編輯,並採取 選擇項的所有權,根據權限名稱,完全控制,選擇 允許複選框。

  • 要授予用戶所選密鑰的特殊權限,請單擊「 高級」。

所以我的問題是,是否有可能以編程方式做到這一點?說,如果我想授予用戶完全控制權限在一個特定的子項,我應該如何寫在C#中的代碼?非常感謝。

回答

3

RegistrySecurity類是這裏也是有用的。所以我們可以編寫下面的代碼來爲當前用戶在註冊表項上應用訪問規則。

RegistrySecurity rs = new RegistrySecurity(); // it is right string for this code 
string currentUserStr = Environment.UserDomainName + "\\" + Environment.UserName; 
rs.AddAccessRule(new RegistryAccessRule(currentUserStr, RegistryRights.WriteKey | RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.FullControl, AccessControlType.Allow)); 
+0

對於一個語言無關的方式賦予權限「人人」的用戶,通過'新的SecurityIdentifier( WellKnownSidType.WorldSid,null)'而不是'currentUserStr'。 –

4
Microsoft.Win32.RegistryKey key; 
key = Microsoft.Win32.Registry.LocalMachine; 
RegistrySecurity rs = new RegistrySecurity(); 
rs = key.GetAccessControl(); 
string currentUserStr = Environment.UserDomainName + "\\" + Environment.UserName; 
rs.AddAccessRule(new RegistryAccessRule(currentUserStr, RegistryRights.WriteKey | RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.FullControl, AccessControlType.Allow)); 

這將分配訪問權限的指定用戶添加到註冊表鍵「key」