Inno setup Inno安装程序:RegValueExists未返回true,正在尝试检查注册表项

Inno setup Inno安装程序:RegValueExists未返回true,正在尝试检查注册表项,inno-setup,Inno Setup,我想显示基于注册表项存在的组件: [Components] Name: "MyProgram"; Description: "MyProgram"; Check: RegistryCheck 这是相应的功能: 函数注册表检查:布尔值; 开始 结果:=RegValueExists(HKEY_本地_计算机,'SOFTWARE\Bricsys','RegisteredOwner') 结束; 我不知道是什么错误,需要检查的安装程序是x64,运行在x64机器上 关键: Rootkey:HKEY\U

我想显示基于注册表项存在的组件:

[Components]
Name: "MyProgram"; Description: "MyProgram"; Check: RegistryCheck  
这是相应的功能:

函数注册表检查:布尔值;
开始
结果:=RegValueExists(HKEY_本地_计算机,'SOFTWARE\Bricsys','RegisteredOwner')
结束;
我不知道是什么错误,需要检查的安装程序是x64,运行在x64机器上

关键:

Rootkey:HKEY\U本地\U机器
名称:RegisterDowner
类型:REG_SZ

数据:用户

正如lexalmi所说,如果您试图在64位操作系统上安装,则可能查找错误的
RootKey

请尝试使用以下选项

RegValueExists(HKLM64,'SOFTWARE\Bricsys','RegisteredOwner')

您观察到的操作系统是什么,是32位还是64位?您的设置使用哪种模式,32位还是64位?该注册表值以32位或64位存储在哪个节点?您可以编辑您的问题并在那里添加这些信息吗?好的,编辑没有说太多,但是让我们假设您正在64位操作系统上以32位模式运行安装程序,并且您将检查该值是否存在于64位注册表节点中。如果这都是真的,只需将根键从
HKEY\U LOCAL\U MACHINE
(将与上述设置映射到32位注册表视图)更改为
HKLM64
,即可从64位注册表视图读取。谢谢!这就解决了问题!:)请注意,如果您的应用程序是64位的,那么您应该启用Inno的64位安装模式。一旦这样做了,您原来的代码就可以工作了。如果你的应用程序是32位的,但你想检查64位的应用程序,你需要使用HKLM64,就像TLama所说的那样。但请记住,这将在32位系统上失败,因此,如果您需要它同时为这两个系统工作,您还需要检查
IsWin64
。谢谢,我会记住这一点。