Inno Setup RegKey在64位系统上运行

tes*_*ino 10 registry inno-setup

我使用Inno Setup创建了一个设置,并希望使用Pascal Script查询注册表

 if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then
Run Code Online (Sandbox Code Playgroud)

我的设置是32位(我想要安装的软件),但在64位系统上,查询被重定向到 HKCR\Wow6432Node\\Installer\UpgradeCodes

当然,即使它存在,也找不到钥匙.即使我的设置仍为32位,如何检测密钥?

tes*_*ino 26

我想到了.您可以在脚本中创建这样的辅助函数:

function GetHKLM: Integer;
begin
  if IsWin64 then
    Result := HKLM64
  else
    Result := HKLM32;
end;
Run Code Online (Sandbox Code Playgroud)

然后你就像使用它一样:

RegQueryStringValue(
  GetHKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'XYZ', Variable);
Run Code Online (Sandbox Code Playgroud)