Inno Setup似乎没有写入64位计算机上的注册表

Lib*_*bor 6 windows registry installation inno-setup

我有一个非常简单的Inno Setup脚本,其中包含此[Registry]部分:

[Registry]
Root: HKLM; Subkey: SOFTWARE; Flags: createvalueifdoesntexist; ValueType: string; ValueName: ABC; ValueData: abc
Run Code Online (Sandbox Code Playgroud)

但是,当我检查HKLM\SOFTWARE子项时,没有添加任何值.

我在HKLM\SOFTWARE和Pascal脚本下尝试了不同的子键,但Inno Setup只是拒绝创建一个新的子键或值.

我正在运行64位Windows 7,UAC已关闭.

Lib*_*bor 14

终于解决了.

Inno Setup在64位机器上运行为32位,因此HKLM对应于HKLM\Wow6432Node.

我需要添加对IsWin64的检查并在这种情况下使用HKLM64.

  • @Govs 我认为语法应该是:`Root: HKLM64; ... <子项、标志等> ... 检查:IsWin64`。但是,我现在只使用常量 `HKLM`(或 `HKCU`),因为它总是指向正确的位置。否则,您必须同时使用“IsWin64”检查和“HKLM32”或“HKLM64”,这在大多数情况下是不必要的。 (2认同)