【发布时间】:2013-10-24 00:05:24
【问题描述】:
我想从我的 C++ 应用程序中为其他应用程序运行 repair - 以编程方式执行当我在 Windows->Control Panel->Program 中为程序手动选择 repair 选项时会发生什么。
对于 remove 选项,我可以在注册表中搜索:
KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall-
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall在 64 位机器上)
然后使用UninstallString 查找我必须使用System() 函数执行的命令。
但是如何以类似的方式运行repair?对于RepairString之类的程序,注册表中没有这样的位置。
我想找到所有程序的通用方法(当然我是指在注册表中留下信息的程序)。
其他问题: 是否有可能由例如 MsiEnumProductsEx 列出的应用程序没有 UninstallString 注册表项?
附言 我从伟大的 Pat 的帖子中获取的有关删除选项的注册表项的信息:
【问题讨论】:
-
请注意,并非所有程序在控制面板中都有修复选项。
-
我知道,但我想为拥有它的程序运行它。以最常见的方式。
-
没有“通用”方式。不同类型的安装程序(MSI、InstallShield、InstallAware 等)以不同的方式(如果有的话)实现恢复,而 Windows 不知道这些方式。
-
但是 CCleaner 等程序具有运行修复的功能。我发现注册表中有类似“ModifyPath”的东西 - 也许这是一个好方法
标签: c++ windows winapi registry windows-installer