2013-07-17 37 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