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

本文关键字:注册表 分配 权限 编程 方式 | 更新日期: 2023-09-27 18:12:33

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

为注册表项分配权限

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

  • 在编辑菜单中,单击权限。

  • 为所选密钥指定访问级别:

  • 允许用户读取密钥内容,但不能保存在Read的权限下,对文件的任何更改,

  • 授予用户打开、编辑和获取文件所有权的权限选择键,在权限下的名称,完全控制,选择

  • 单击,授予用户所选密钥的特殊权限先进。

所以我的问题是,是否有可能通过编程来实现?比如说,如果我想授予Users 对特定子键的完全控制权限,我应该如何用c#编写代码?非常感谢。

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

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'

RegistrySecurity class在这里也很有用。因此,我们可以编写以下代码,对当前用户的注册表项应用访问规则。

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

这是关于RegSetKeySecurity API,它是通过RegistryKey.SetAccessControl从。net代码接口,参见使用RegSetKeySecurity来避免注册表重定向