2012-08-10 137 views
0

我正試圖從註冊表中獲取一個值,以便使用水晶報表完成打印功能。Registry.GetValue錯誤。 Visual Studio 2010中的C#

但是,當我執行路徑時出錯,因爲我的註冊表路徑無法正常工作。

 Values- Global.gAPPNAME = "TEST" Global.gAPPSECTION = "STARTUP" 

    Global.gREPORTDIR = Registry.GetValue(Global.gAPPNAME, Global.gAPPSECTION, "REPORTDIR").ToString(); 

當它擊中Global.gREPORTDIR線我得到的錯誤 - 「註冊表項名稱必須以有效的基本密鑰名」

我是新來這個,我想知道這是否是什麼可以用代碼或我需要在實際計算機中找到的東西來修復,以找到正確的路徑。任何建議都會有幫助。謝謝。

+0

使用RegistryKey類落入成功的陷阱。 – 2012-08-10 13:48:35

回答

3

您需要指定一個有效的根名稱:

有效根名字是HKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_CLASSES_ROOTHKEY_USERSHKEY_PERFORMANCE_DATAHKEY_CURRENT_CONFIGHKEY_DYN_DATA

+0

謝謝。我能夠添加一個Global.gAPPName的鍵,這會導致繞過當前錯誤,但現在我得到該行上的空異常錯誤。 – 2012-08-10 14:34:53

+0

可以看出當前的代碼,但如果你對null執行ToString(),你會得到那個異常。 – 2012-08-10 21:58:51

+0

我們決定不用試圖讀取註冊表來創建一個xml文件來存儲值並從中讀取/寫入。這樣它也將允許我們從xp和win7來回切換。謝謝您的幫助。 – 2012-08-13 14:06:29

1

你可以閱讀Registry.GetValue這裏:http://msdn.microsoft.com/library/microsoft.win32.registry.getvalue.aspx

所以你的錯誤來自第一個參數:

有效根名字是HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT,HKEY_USERS,HKEY_PERFORMANCE_DATA, HKEY_CURRENT_CONFIG,和HKEY_DYN_DATA。例如,在Visual Basic 中,字符串「HKEY_CURRENT_USER \ MyTestKey」訪問HKEY_CURRENT_USER根中子鍵「MyTestKey」的鍵/值對 。

您可以使用靜態鍵,方便使用

Registry.LocalMachine.Name 
+0

你的答案在那裏有點小諷刺,先生。 – 2012-08-10 13:34:28

+0

對不起,如果看起來很粗魯... – JleruOHeP 2012-08-10 13:35:33

+1

與其挑戰他們是否閱讀過文檔,告訴他們出了什麼問題,並提供文檔作爲您推理的證據。 – 2012-08-10 13:36:50