我在 NSIS 中构建了一个应用程序设置。该集合需要在以下位置创建一个 key 才能启动我的应用程序:-
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"
此 key 在 32 位 Windows 7 系统上创建成功。但是,当我在 64 位 Windows 7 系统上安装设置时,未在上述位置创建 key 。相反,它在以下位置创建 key :-
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 位系统强制创建 key ,而不是在 HKEY_LOCAL_MACHINE\Software\Wow6432Node 下创建吗?
急切地等待解决方案......
最佳答案
使用 SetRegView在 32 位和 64 位注册表之间切换。您的代码应如下所示:
SetRegView 64
WriteRegDWORD HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" 0
SetRegView 32
WriteRegStr HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" "11"
关于nsis - 在 64 位系统中写入注册表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150238/