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

woo*_*ddy 7 .net c# registry permissions

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

为注册表项分配权限

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

  • 在"编辑"菜单上,单击"权限".

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

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

  • 要授予用户打开,编辑和获取所选密钥所有权的权限,请在"名称权限"下的" 完全控制"下,选中"允许"复选框.

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

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

woo*_*ddy 5

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

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));
Run Code Online (Sandbox Code Playgroud)


win*_*der 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));
Run Code Online (Sandbox Code Playgroud)

这将指定用户的访问权限分配给注册表项"key"