C#修改注册表权限
最后一次OpenSubKey("test", true)的时候,true表示可写,但是你先前已经拒绝SetValue,因此OpenSubKey就出错了。
把OpenSubKey改成另一个重载,并指定RegistryRights.ChangePermissions:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{ NTAccount name = new NTAccount(Environment.UserDomainName, Environment.UserName); using (RegistryKey regKey = Registry.LocalMachine.OpenSubKey("software\\test", RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.ChangePermissions)) { RegistrySecurity rs =regKey.GetAccessControl(); RegistryAccessRule denyRule = rs .GetAccessRules(true, false, typeof(NTAccount)) .OfType<RegistryAccessRule>() .FirstOrDefault(r => r.AccessControlType == AccessControlType.Deny && (r.IdentityReference as NTAccount) == name); if (denyRule != null && rs.RemoveAccessRule(denyRule)) { regKey.SetAccessControl(rs); } }} |

浙公网安备 33010602011771号