2013-07-17 38 views
0

我想在注册表项上设置下面的权限。但是当它尝试时我得到一个NullReferenceException错误。作为一个新手使这个凝灰岩。抛出权限(一直困惑着我),我很难过。有人能告诉我为什么我得到这个?谢谢。NullReferenceException当试图设置与C#的注册表权限

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

+0

它无法得到RegistryKey rk –

回答

1

此行是导致你错误

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

将一个调试器在这里,看看它是否具有价值,或者为空。如果它为空,请检查该路径是否有效。如果它是有效的这样做它是这样的

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

谢谢。调试器提示是我忘记的东西。 – JimDel

1

尝试

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

(双 '\')

如果没有,尝试this answer

1

最有可能是null引用异常在RegistryKey rk本身上。

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