如何使用 Inno Setup pascal 脚本从注册表中读取 MachineGuid

Posted

技术标签:

【中文标题】如何使用 Inno Setup pascal 脚本从注册表中读取 MachineGuid【英文标题】:How to read MachineGuid from registry using Inno Setup pascal scripting 【发布时间】:2013-01-22 05:54:23 【问题描述】:

我正在尝试使用 Inno setup pascal 脚本函数 RegQueryStringValue 从 Windows 注册表中读取机器 GUID。我之后的注册表项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid

procedure StoreHwID();
    var
    HwId: String;

begin
   RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Cryptography','MachineGuid', HwId);
   MsgBox('Value is "' + HwId + '"', mbInformation, MB_OK);
end;

这无法在 HwId 变量中设置值。

我错过了什么?

【问题讨论】:

【参考方案1】:

InnoSetup 是一个 32 位进程。如果您在 64 位操作系统上运行,则需要使用 HKEY_LOCAL_MACHINE_64 而不是 HKEY_LOCAL_MACHINE 指定 64 位注册表。您可能需要拨打两个 RegQueryStringValue 电话。一个用于 64 位,一个用于 32 位。

【讨论】:

不需要两次调用;实际上,HK** 值只是整数。您可以使用 IsWin64() 检查它是否为 64 位,将相关值存储在一个整数变量中,然后将其用于调用的第一个参数。

以上是关于如何使用 Inno Setup pascal 脚本从注册表中读取 MachineGuid的主要内容,如果未能解决你的问题,请参考以下文章

Inno Setup, Pascal 字符串带双引号如何写

Inno Setup执行SQL脚本的方法

Inno Setup 2 :语法解析

Inno Setup :Hello World

将功能执行添加到 inno setup 的安装程序进度中

可以在 Inno Setup 脚本中使用环境变量吗?