Inno Setup RegQueryStringValue 未从 HKEY_LOCAL_MACHINE 读取值

问题描述 投票:0回答:1

我在 Inno Setup 中创建了一个设置来检查 Windows Server 2019 Datacenter 的产品名称和

CurrentMajorVersionNumber

但是出于某种原因我无法在 Inno Setup 文件中获取任何日志。

我检查了 Server 2019 的注册表位置,即

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

注册表中的
ProductName
REG_SZ

注册表中的
CurrentMajorVersionNumber
REG_DWORD

function InitializeSetup(): Boolean;
var
  ProductName: string;
  CurrentMajorVersionNumber: string;  
begin
  if RegQueryStringValue(
       HKEY_LOCAL_MACHINE, '\SOFTWARE\Microsoft\Windows NT\CurrentVersion',
       'ProductName', ProductName) then
  begin        
    Log('  > ProductName:' + ProductName)
  end;

  if RegQueryStringValue(
       HKEY_LOCAL_MACHINE, '\SOFTWARE\Microsoft\Windows NT\CurrentVersion',
       'CurrentMajorVersionNumber', CurrentMajorVersionNumber) then
  begin        
    Log('  > CurrentMajorVersionNumber:' + CurrentMajorVersionNumber)
  end;
end;

运行上述代码时,没有可用的日志。 阅读该平台上有关此主题的其他帖子对我没有帮助。 有解决办法吗?

registry inno-setup pascalscript
1个回答
4
投票

Inno Setup 是 32 位应用程序。当您尝试在 64 位系统上访问 HKLM\SOFTWARE\WOW6432Node 时,默认情况下

会重定向
HKLM\SOFTWARE

如果你想在64位系统上访问真正的

HKLM\SOFTWARE
,请使用
HMLM64
。如果您需要支持这两个系统,您可能需要使用
IsWin64
HKLM32
HKLM64
之间进行选择。或者,您可以使用64位安装模式


第二件事是您不能使用

RegQueryStringValue
来读取
REG_DWORD
值。您需要使用
RegQueryDWordValue

© www.soinside.com 2019 - 2024. All rights reserved.