Inno setup Inno安装程序:查找注册表项

Inno setup Inno安装程序:查找注册表项,inno-setup,pascalscript,Inno Setup,Pascalscript,在命令行上,以下命令返回正确的结果: REG Query "HKCU\Software\Microsoft\Office" /s /f "MyEntry" 如何使用Inno安装程序进行此操作 这意味着: 如何从某个键开始,然后如何查看所有子文件夹以找到某个值? 代码应该返回完整路径 这个问题相当模糊。给定的reg query命令将同时查找键名、值名和值。这似乎不太可能,这样的查询对于真正的程序很有用 但无论如何,要递归地迭代注册表项,请使用下面的代码。添加您自己的测试,以找到您真正想要的: p

在命令行上,以下命令返回正确的结果:

REG Query "HKCU\Software\Microsoft\Office" /s /f "MyEntry"
如何使用Inno安装程序进行此操作

这意味着:
如何从某个键开始,然后如何查看所有子文件夹以找到某个值? 代码应该返回完整路径


这个问题相当模糊。给定的
reg query
命令将同时查找键名、值名和值。这似乎不太可能,这样的查询对于真正的程序很有用

但无论如何,要递归地迭代注册表项,请使用下面的代码。添加您自己的测试,以找到您真正想要的:

procedure RegSearch(RootKey:Integer;KeyName:string);
变量
I:整数;
名称:TArrayOfString;
名称:字符串;
开始
如果RegGetSubkeyNames(RootKey、KeyName、Names),则
开始
对于I:=0到GetArrayLength(名称)-1 do
开始
名称:=KeyName+'\'+名称[I];
日志(格式('Found key%s',[Name]);
RegSearch(RootKey,Name);
结束;
结束;
如果RegGetValueNames(RootKey、KeyName、Names),则
开始
对于I:=0到GetArrayLength(名称)-1 do
开始
名称:=KeyName+'\'+名称[I];
日志(格式('Found value%s',[Name]);
结束;
结束;
结束;
要启动搜索,请调用以下函数:

RegSearch(HKEY_当前用户,'Software\Microsoft\Office');