9

我在 NSIS 中构建了一个应用程序设置。该集合需要在以下位置创建一个密钥才能启动我的应用程序:- HKEY_LOCAL_MACHINE\Software\\\" "VersionNo" 0 HKEY_LOCAL_MACHINE\Software\Wow6432Node\\" "VersionNo" "11"

在脚本中,我使用过:-

      WriteRegDWORD HKLM "SOFTWARE\<Key1>\<Key2>\<Key3>" "VersionNo" 0
      WriteRegStr HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" "11"

此密钥在 32 位 Windows 7 系统上成功创建。但是,当我在 64 位 Windows 7 系统上安装设置时,不会在上述位置创建密钥。相反,它在以下位置创建密钥:-

      HKEY_LOCAL_MACHINE\Software\Wow6432Node\<Key1>\<Key2>\<Key3>" "VersionNo" 0
      HKEY_LOCAL_MACHINE\Software\Wow6432Node\<Key1>\<Key2>" "VersionNo" "11"

这导致我的应用程序在安装后无法启动。

--有人可以建议 NSIS 的命令/脚本强制在 HKEY_LOCAL_MACHINE\Software\ 下为 64 位系统创建密钥,而不是在 HKEY_LOCAL_MACHINE\Software\Wow6432Node 下创建密钥吗?

急切地等待解决方案......

4

1 回答 1

34

使用SetRegView在 32 位和 64 位注册表之间切换。您的代码应如下所示:

SetRegView 64
WriteRegDWORD HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" 0
SetRegView 32
WriteRegStr HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" "11"
于 2012-06-22T04:45:22.633 回答