我允许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。