我在 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;
运行上述代码时,没有可用的日志。 阅读该平台上有关此主题的其他帖子对我没有帮助。 有解决办法吗?
Inno Setup 是 32 位应用程序。当您尝试在 64 位系统上访问 HKLM\SOFTWARE\WOW6432Node
时,默认情况下
会重定向到
HKLM\SOFTWARE
。
如果你想在64位系统上访问真正的
HKLM\SOFTWARE
,请使用HMLM64
。如果您需要支持这两个系统,您可能需要使用 IsWin64
在 HKLM32
和 HKLM64
之间进行选择。或者,您可以使用64位安装模式。
第二件事是您不能使用
RegQueryStringValue
来读取 REG_DWORD
值。您需要使用RegQueryDWordValue
。