代码之家  ›  专栏  ›  技术社区  ›  limc

NSIS:无法从Windows 7 64位注册表中获取JRE版本

  •  4
  • limc  · 技术社区  · 15 年前

    我正在使用NSIS脚本为我的Java项目生成windows安装程序。在此安装程序中,我想在继续之前检查计算机是否具有正确的JRE版本。

    这是我获取JRE版本的代码片段:-

    ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
    
    # display $1 value for testing purpose
    MessageBox MB_OK "Version: $1"
    

    这段代码在Windows XP中运行得很好,但是我不能让它在Windows 7 64位中运行。。。版本号始终为空。我检查注册表,我很确定路径是正确的,“CurrentVersion”有一个值。

    有人能告诉我这里做错了什么吗?

    非常感谢!

    3 回复  |  直到 15 年前
        1
  •  8
  •   Anders    15 年前

    在NSIS中,可以使用 SetRegView

        2
  •  2
  •   Mario    15 年前

    安装程序是32位的,运行时是64位的,反之亦然?在这种情况下,您可能会被重定向到不同的注册表节点(在HKLM/Software或HKLM/Software/Wow6432Node中)。

        3
  •  1
  •   Colin Newell    15 年前

    NSIS安装程序是一个32位程序,因此它可以看到注册表的不同部分。这篇知识库文章解释了64位Windows上注册表的区别。

    http://support.microsoft.com/kb/305097

    我不完全确定你是否能从32位应用程序访问所需的密钥。