以编程方式向注册表子键分配权限

10

以下是如何通过手动方式给注册表键分配权限的步骤:

给注册表键分配权限

  • 打开注册表编辑器。点击您要分配权限的键。

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

  • 按照以下方式为所选键分配访问级别:

  • 要授予用户读取键内容的权限,但不保存对文件做出的任何更改,请在名称的权限下,对于读取,选择“允许”复选框。

  • 要授予用户打开、编辑和拥有所选键的权限,请在名称的权限下,对于完全控制,选择“允许”复选框。

  • 要在所选键中授予用户特殊权限,请单击“高级”。

那么我的问题是,是否可以通过编程方式完成此操作?比如说,如果我想在特定子键上授予用户完全控制权限,我应该如何在C#中编写代码?非常感谢。

3个回答

7
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”。

5

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));

为了以一种与语言无关的方式向“everyone”用户授予权限,请传递new SecurityIdentifier(WellKnownSidType.WorldSid, null)而不是currentUserStr - Uwe Keim

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接