2012-08-10 135 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