以编程方式将权限分配给注册表子项

时间:2011-10-28 09:21:29

标签: c# .net permissions registry

以下是我们manually如何为注册表项分配权限:

为注册表项分配权限

  • 打开注册表编辑器。单击要为其分配权限的密钥。

  • 在“编辑”菜单上,单击“权限”。

  • 为所选密钥分配访问级别,如下所示:

  • 授予用户读取密钥内容的权限,但不保存 对于读取,在名称权限下对文件所做的任何更改, 选中允许复选框。

  • 授予用户打开,编辑和获取所有权的权限 在完全控制下,在名称权限下选择密钥,然后选择 允许复选框。

  • 要授予用户所选密钥的特殊权限,请单击 高级。

所以我的问题是,是否有可能以编程方式进行?比如,如果我想授予用户完全控制权限的特定子项,我应该如何在C#中编写代码?非常感谢。

3 个答案:

答案 0 :(得分:5)

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”

答案 1 :(得分: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));

答案 2 :(得分:1)

它是RegSetKeySecurity API,通过RegistryKey.SetAccessControl与.NET代码连接,请参阅Using RegSetKeySecurity to avoid registry redirection

相关问题