{sysuserinfoorg}常量为空

时间:2016-03-30 19:17:51

标签: inno-setup

我使用以下内容,但{sysuserinfoorg}的值为空字符串:

Data := 'UNINSTALL=' {sysuserinfoorg};

上述行返回' UNINSTALL'。

我也尝试ExpandConstant('{sysuserinfoorg}')同样的结果。

我在DeinitializeUninstall过程中使用它并通过HTTP post将Data发送到我的服务器,后者将其写入日志文件。这一切都有效,但{sysuserinfoorg}是空的。我所追求的是一些识别用户和/或其组织的信息。 Inno Setup doc表明{sysuserinfoorg}包括注册表中有关机器注册人的数据。

1 个答案:

答案 0 :(得分:0)

ExpandConstant是正确的方法:

Data := 'UNINSTALL=' + ExpandConstant('{sysuserinfoorg}');

问题可能是实际上没有注册公司。

检查RegisteredOrganization键中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion值的值。

在我的机器上,它是空的,因此{sysuserinfoorg}也是空的。

仅仅{sysuserinfoorg}在Pascal代码中是无意义的。

Data := 'UNINSTALL=' {sysuserinfoorg};

{...}comment in Pascal,您可以看到已启用语法高亮显示。

因此代码编译为:

Data := 'UNINSTALL=';

您还可以尝试通过阅读注册表来明确检索该值:

if RegQueryStringValue(
     HKEY_LOCAL_MACHINE_64, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
     'RegisteredOrganization', S) then
begin
  Log('64-bit RegisteredOrganization = ' + S)
end
  else
begin
  Log('64-bit RegisteredOrganization is not defined')
end;

if RegQueryStringValue(
     HKEY_LOCAL_MACHINE_32, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
     'RegisteredOrganization', S) then
begin
  Log('32-bit RegisteredOrganization = ' + S)
end
  else
begin
  Log('32-bit RegisteredOrganization is not defined')
end;

Log('sysuserinfoname = ' + ExpandConstant('{sysuserinfoname}'));