首页 文章

在Windows上查找应用程序的位置

提问于
浏览
-1

拥有应用程序的产品代码或产品名称,如何找到安装此应用程序的位置?必须存在此信息,因为Windows卸载知道要删除的文件夹 . 我希望它将在注册表项“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall 下,但位置不存在 . 我搜索了整个注册表,但我找不到它 . 你知道我怎么样吗?可以找到位置?如果你有一些.NET代码这样做,那就更好了 .

2 回答

  • 1

    如果您有产品代码,则可以在调用MsiGetProductInfo时使用它 . 此调用可能会告诉您INSTALLPROPERTY_INSTALLLOCATION,或者它可以告诉您INSTALLPROPERTY_LOCALPACKAGE,然后您可以使用MsiOpenDatabase来查找其组件 . 一旦有权访问其组件,就可以调用MsiGetComponentPath来查找其密钥文件 . 最终,其中一个组件应该能够告诉您需要知道的内容 .

    如果您提前知道组件,则可以跳过大部分步骤 . 如果这是来自另一个包,您可以使用基于_2367213的搜索来查找它而无需编写自定义操作 .

    如果必须使用.NET代码执行此操作,则可以为这些函数创建P / Invoke包装器,使用DTF中的现有包装,或查看COM可访问的Windows Installer Automation Interface是否公开了正确的API .

  • 0

    问题有点模糊,因为通常没有安装应用程序的单一位置 . 但是,如果您指的是用户通常可以更改的主“应用程序文件夹”,那么它可能会被存储 . 但是,只有在安装程序发生时,该安装位置才会在注册表中(并且可从MsiGetProductInfo中获得) . 设置必须将ARPINSTALLLOCATION设置为(通常)TARGETDIR for Windows以存储它 .

    否则,正如Michael所说,从产品中找到一个组件ID并获取其路径 . 但是,如果您要创建安装并需要在该位置安装某些内容,则不需要代码 . 大多数设置工具都有一个组件搜索,可用于设置文件的安装目录 .

相关问题