2011-10-28 44 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”