我正在授予 NETWORK SERVICE 访问我需要通过我运行的控制台应用程序访问的注册表项的权限 NETWORK SERVICE . 以下是我创建密钥和授予权限的方法 .
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE", RegistryKeyPermissionCheck.ReadWriteSubTree);
RegistrySecurity rs = new RegistrySecurity();
rs = key.GetAccessControl();
rs.AddAccessRule(new RegistryAccessRule("NETWORK SERVICE", RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
key.SetAccessControl(rs);
key = key.CreateSubKey("RM", RegistryKeyPermissionCheck.ReadWriteSubTree);
key = key.CreateSubKey("CSVExtraction", RegistryKeyPermissionCheck.ReadWriteSubTree);
key.SetValue("Failure Tally", "0");
但是当我尝试使用以下代码将setValue设置为键时,我收到错误 . 我用来设置值的代码如下 .
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
key = key.CreateSubKey("RM", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
key = key.CreateSubKey("CSVExtraction", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
key.SetValue("Failure Tally, "1");
但在这里我收到一条错误,说是拒绝访问HKLM / LOCAL MACHINE / SOFTWARE . 但是我使用上面的代码添加了访问规则 . 但是当我去手动检查访问时,访问被添加到WOW6432node .
1 回答
这个问题可以通过进行2次更改来解决1)同时授予权限您的代码:rs.AddAccessRule(新的RegistryAccessRule(“NETWORK SERVICE”,RegistryRights.FullControl,InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,PropagationFlags.InheritOnly,AccessControlType.Allow)) ; key.SetAccessControl(RS);
将其编辑为:
这是为了确保你给出的权限是inge = herited sub trees .
2)您不需要按键打开键,而是可以通过写入访问所需的键