我授予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。
可以通过进行2个更改来解决此问题1)在授予您的代码权限的同时:rs.AddAccessRule(new RegistryAccessRule(“ NETWORK SERVICE”,RegistryRights.FullControl,InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,PropagationFlags.InheritOnly,AccessControlType.Allow)) ; key.SetAccessControl(rs);
将其编辑为:
rs.AddAccessRule(new RegistryAccessRule("NETWORK SERVICE", RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
key.SetAccessControl(rs);
这样做是为了确保您给出的许可被继承到子树。
2)您不需要按键打开键,而是可以通过以下方式访问所需的键:
string registryFolderStructure =@"SOFTWARE\RM\CSVExtraction";
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(registryFolderStructure, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句