向注册表授予权限

阿杰·巴西(Ajay Bhasy)

我授予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。

Mohdaneeselampara

可以通过进行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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章