2012-07-11 99 views
0

我想使用C#在註冊表中讀取值,如果值不在註冊表中,我創建它。我有一個問題閱讀:註冊表getValue與C#

RegistryKey regKey1 = Registry.CurrentUser; 
regKey1 = regKey1.CreateSubKey(@"SOFTWARE\PNMDISPATCHER"); 

if (regKey1 != null) 
{ 
    textBoxTaux1.Text = regKey1.GetValue("Taux1").ToString(); 
} 

我有NullReferenceException當執行GetValue功能。 我的值是在註冊表中,所以爲什麼我得到這個錯誤?

+0

繼續閱讀第一個http://stackoverflow.com/a/721190/67505 – 2012-07-11 10:14:51

+0

嘗試爲類似位置的某個其他鍵值獲取值。如果它有效,你知道你得到了你的名字/值對或路徑錯誤。另外,您可以嘗試OpneSubKey,它提供只讀訪問權限。另外,請檢查您是否可以使用當前帳戶訪問機器上的註冊表和管理員權限。 – 2012-07-11 10:21:55

回答

0

貌似RegistryKey.GetValue被返回null和不能做的ToString()

從MSDN採取了RegistryKey.GetValue:

檢索與指定名稱關聯的值。如果註冊表中不存在名稱/值對,則返回null 。

+0

問題解決了....這是一個空值返回。非常感謝: ) – 2012-07-11 10:27:25

1

好吧,顯然你沒有得到正確的路徑。當沒有找到關鍵

GetValue返回Null。另外檢查http://msdn.microsoft.com/en-us/library/fdf576x1

你能通過它進行調試,並仔細檢查你想看到的路徑,確實在文本框行regKey1變量?

+0

我的路都行!我不明白:(另外,我有關鍵值,如果我使用註冊表編輯器 – 2012-07-11 10:21:20

+0

+1即使你的回答是正確的 – HatSoft 2012-07-11 10:28:25

0

也許NullReferenceException是爲textBoxTaux1?請發佈調用堆棧來解決這個問題。你可以使用Exception.ToString()來獲得這個。