2013-11-21 62 views
3

我想基于注册表键的存在,显示组件:Inno Setup的:RegValueExists没有返回true,试图检查注册表项

[Components] 
Name: "MyProgram"; Description: "MyProgram"; Check: RegistryCheck 

这是相应的功能:

function RegistryCheck: Boolean; 
    begin 
    Result := RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Bricsys', 'RegisteredOwner')  
    end; 

我不知道什么是错误,必须检查的已安装程序是x64,在x64机器上运行IS。

重点:

Rootkey:HKEY_LOCAL_MACHINE
名称:RegisteredOwner
类型:REG_SZ
数据:用户

+2

什么是你在观察这个操作系统,并且是32位还是64位?你使用哪种模式,32位或64位?在哪个节点中存储该注册表值,在32位还是64位?你能编辑你的问题并在那里添加这些信息吗? – TLama

+1

好的,编辑没有太多的说法,但假设你在64位操作系统上以32位模式运行安装程序,并且要检查该值是否存在于64位注册表节点中。如果这一切都是真的,只需将'HKEY_LOCAL_MACHINE'(将映射到提及的设置到一个32位注册表视图)的根密钥更改为'HKLM64',然后您将从64位注册表视图中读取。 – TLama

+0

谢谢!这解决了它! :) – lecalmi

回答

1

正如lexalmi说,如果你要安装在64位的操作系统,你可以看错了RootKey

尝试使用替代以下...

RegValueExists(HKLM64, 'SOFTWARE\Bricsys', 'RegisteredOwner') 
相关问题