Inno setup {sysuserinfoorg}常量为空

Inno setup {sysuserinfoorg}常量为空,inno-setup,Inno Setup,我正在使用以下内容,但{sysuserinfoorg}的值是空字符串: Data:='UNINSTALL='{sysuserinfoorg}; 上面的行返回“卸载” 我还尝试了ExpandConstant('{sysuserinfoorg}'),得到了相同的结果 我在DeinitializeUninstall过程中使用了它,并通过HTTP post将数据发送到我的服务器,服务器将其写入日志文件。它可以正常工作,但是{sysuserinfoorg}是空的。我想要的是一些识别用户和/或其组织的信息

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

Data:='UNINSTALL='{sysuserinfoorg};
上面的行返回“卸载”

我还尝试了
ExpandConstant('{sysuserinfoorg}')
,得到了相同的结果


我在
DeinitializeUninstall
过程中使用了它,并通过HTTP post将
数据发送到我的服务器,服务器将其写入日志文件。它可以正常工作,但是
{sysuserinfoorg}
是空的。我想要的是一些识别用户和/或其组织的信息。Inno Setup doc表示
{sysuserinfoorg}
包含来自注册计算机的注册表的数据。

ExpandConstant
是正确的方式:

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

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


检查
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
键中的
RegisteredOrganization

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


在Pascal代码中,纯粹的
{sysuserinfoorg}
是无意义的

Data:='UNINSTALL='{sysuserinfoorg};
{…}
是一个函数,您可以通过启用语法高亮显示看到这一点

因此,代码编译为:

Data:=“卸载=”;

您还可以尝试通过读取注册表显式检索值:

if RegQueryStringValue(
HKEY\U LOCAL\U MACHINE\U 64,“软件\Microsoft\Windows NT\CurrentVersion”,
"注册机构"则
开始
日志('64位寄存器组织='+S)
结束
其他的
开始
日志('未定义64位注册表组织')
结束;
如果是RegQueryStringValue(
HKEY\U LOCAL\U MACHINE\U 32,“软件\Microsoft\Windows NT\CurrentVersion”,
"注册机构"则
开始
日志('32位寄存器组织='+S)
结束
其他的
开始
日志('未定义32位注册表组织')
结束;
Log('sysuserinfoname='+ExpandConstant('{sysuserinfoname}');

ExpandConstant是正确的方法:

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

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


检查
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
键中的
RegisteredOrganization

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


在Pascal代码中,纯粹的
{sysuserinfoorg}
是无意义的

Data:='UNINSTALL='{sysuserinfoorg};
{…}
是一个函数,您可以通过启用语法高亮显示看到这一点

因此,代码编译为:

Data:=“卸载=”;

您还可以尝试通过读取注册表显式检索值:

if RegQueryStringValue(
HKEY\U LOCAL\U MACHINE\U 64,“软件\Microsoft\Windows NT\CurrentVersion”,
"注册机构"则
开始
日志('64位寄存器组织='+S)
结束
其他的
开始
日志('未定义64位注册表组织')
结束;
如果是RegQueryStringValue(
HKEY\U LOCAL\U MACHINE\U 32,“软件\Microsoft\Windows NT\CurrentVersion”,
"注册机构"则
开始
日志('32位寄存器组织='+S)
结束
其他的
开始
日志('未定义32位注册表组织')
结束;
Log('sysuserinfoname='+ExpandConstant('{sysuserinfoname}');

在阅读了更多的Inno文档之后,似乎sysuserinfoorg和sysuserinfoname是用户必须在可选的用户信息向导中提供的值。我在CurrentVersion密钥中有值,它支持上述内容。你在哪里读到Inno从那个键获取值的?那不是真的。仅从向导中读取
{userinfo*}
常量。
{sysuserinfo*}
常量从注册表中读取。很明显,如果您检查Inno Setup源代码(以及
Projects/Main.pas
).HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion中的函数),其中的每个值都有一个条目。我在两台Windows7机器上试过这个。我还尝试了两天前安装的Inno最新版本的ASCII和Unicode版本。我还添加了sysinfousername,它也是空的。您不是误用了32位版本的regedit吗?还可以尝试我刚才添加到答案中的代码。根据MS的说法,64位版本的Regedit是64位机器上的默认版本。我通过启动并键入regedit.exe访问它,然后运行它。所以不,我不认为这会加载32位版本。我刚刚通过输入%systemroot%\syswow64\regedit运行了32位版本,它确实在CurrentVersion下显示了一些不同的值,但没有一个是空的:registeredorganization和registereduser在阅读了更多的Inno文档后都是“Microsoft”,似乎sysuserinfoorg和sysuserinfoname是用户必须在可选用户信息向导中提供的值。我在CurrentVersion密钥中有值,它支持上述内容。你在哪里读到Inno从那个键获取值的?那不是真的。仅从向导中读取
{userinfo*}
常量。
{sysuserinfo*}
常量从注册表中读取。很明显,如果您检查Inno Setup源代码(以及
Projects/Main.pas
).HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion中的函数),其中的每个值都有一个条目。我在两台Windows7机器上试过这个。我还尝试了两天前安装的Inno最新版本的ASCII和Unicode版本。我还添加了sysinfousername,它也是空的。您不是误用了32位版本的regedit吗?还可以尝试我刚才添加到答案中的代码