如何使用安装屏蔽找到每个安装的GUID更改的第三方应用程序的安装位置和GUID?

时间:2016-01-28 10:50:02

标签: installshield regedit installscript installshield-2011

我知道应用程序名称,并尝试使用安装盾来查找应用程序的安装位置和GUID。

我手动在以下位置找到了应用程序注册表值(如DisplayName,InstallLocation,UninstallString等):     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载{GUID}

但是每个客户端计算机的应用程序的GUID都不同,所以我无法使用以下函数对注册表路径进行硬编码以获取这些值。   RegDBGetKeyValueEx();

如果我们知道应用程序名称,我们能否找到应用程序的GUID?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用与RegDBQueryKey example类似的代码列出卸载密钥:

#define UNINSTALLKEYPATH "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
listKeys = ListCreate(STRINGLIST);
RegDBQueryKey(UNINSTALLKEYPATH, REGDB_KEYS, listKeys);

然后你可以使用类似于ListGetNextItem example的代码迭代这些键来寻找合适的值:

nResult = ListGetFirstItem(listKeys, sItem);
while (nResult != END_OF_LIST)
    RegDBGetKeyValueEx(UNINSTALLKEYPATH ^ sItem, ...); // check each key
    nResult = ListGetNextItem(listKeys, sItem);
endwhile;

找到后,您可以利用该密钥中的任何其他信息或密钥本身的名称。 (注意:别忘了销毁清单。)

如果您了解有关此设置的其他信息,例如,如果它是MSI,则可能有更多直接方法利用Windows Installer API。