如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章