在64位系统中编写注册表值

Bom*_*nho 9 nsis

我在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"
Run Code Online (Sandbox Code Playgroud)

此密钥在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"
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ser*_*bry 30

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

SetRegView 64
WriteRegDWORD HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" 0
SetRegView 32
WriteRegStr HKLM "SOFTWARE\<Key1>\<Key2>" "VersionNo" "11"
Run Code Online (Sandbox Code Playgroud)

  • @Bomzinho你应该将接受的答案标记为对Sergius的礼貌 (9认同)