Inno Setup RegKey存在于64位系统上

发布于 2024-10-07 12:13:31 字数 357 浏览 5 评论 0原文

我使用 Inno Setup 创建了一个安装程序,并想使用 Pascal Script 查询注册表

 if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then

我的安装程序是 32 位(我要安装的软件也是如此),但在 64 位系统上,查询被重定向到 HKCR\Wow6432Node\\Installer \UpgradeCodes

当然,即使密钥在那里,也没有找到。即使我的设置仍然是 32 位,如何检测密钥?

I created a setup with Inno Setup and wanted to query the registry using Pascal Script

 if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then

My setup is 32bit (as is my Software I want to install), but on 64bit systems, the query is redirected to HKCR\Wow6432Node\\Installer\UpgradeCodes

Of course, the key is not found, even though it is there. How can I detect the key even though my setup remains 32bit?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

落花浅忆 2024-10-14 12:13:31

我想通了。您可以在脚本中创建一个像这样的辅助函数:

function GetHKLM: Integer;
begin
  if IsWin64 then
    Result := HKLM64
  else
    Result := HKLM32;
end;

然后您可以像这样使用它:

RegQueryStringValue(
  GetHKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'XYZ', Variable);

I figured it out. You can make a helper function like this in your script:

function GetHKLM: Integer;
begin
  if IsWin64 then
    Result := HKLM64
  else
    Result := HKLM32;
end;

Then you use it like e.g.:

RegQueryStringValue(
  GetHKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'XYZ', Variable);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文