尝试使用C#设置注册表权限时出现NullReferenceException

时间:2013-07-17 14:57:53

标签: c# permissions registry

我正在尝试在注册表项上设置以下权限。但是在尝试时我收到NullReferenceException错误。作为一个新手制作这个凝灰岩。抛出权限(这总是困扰我),我很难过。有人能告诉我为什么我得到这个吗?感谢。

using System;
using Microsoft.Win32;
using System.Security.AccessControl;

namespace ConsoleApplication7
{
   class Program
   {
       static void Main(string[] args)
       {
           RegistrySecurity rs = new RegistrySecurity();
           string user = "Everyone";

           RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\SOFTWARE\Wow6432Node\123Test", true);

           rs.AddAccessRule(new RegistryAccessRule(user,
               RegistryRights.FullControl | RegistryRights.TakeOwnership,
               InheritanceFlags.ContainerInherit,
               PropagationFlags.None,
               AccessControlType.Allow));

           rk.SetAccessControl(rs);
       }
   }
}

enter image description here

3 个答案:

答案 0 :(得分:1)

尝试

@"\\SOFTWARE\\Wow6432Node\\123Test"
  

(双'\')

如果没有,请尝试this answer

答案 1 :(得分:1)

很可能nullReference异常位于RegistryKey rk本身。

您的应用程序是作为32位还是64位应用程序运行的?您不需要指定Wow6432Node部分,只能引用@"\SOFTWARE\123Test

答案 2 :(得分:1)

此行导致错误

 RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\SOFTWARE\Wow6432Node\123Test", true);

在此处放置一个调试器,看它是否有值或是否为null。如果为null,则检查该路径是否有效。如果它有效,请按照这样做

RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\\SOFTWARE\\Wow6432Node\\123Test", true);