显然,它是这样工作的(在Windows 7上,我不了解XP和其他操作系统):
用户安装某些应用程序时,Windows将执行以下操作:
1)创建一个注册表项
HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductId GUID]
为此应用程序。
如果您有权访问应用程序安装程序的原始msi文件,则可以通过以下方法找到[ProductID GUID]:在orca.exe中打开该msi文件,然后单击orca左侧的“属性”,然后查找“ ProductCode”右边的线。如果您无权访问原始* .msi文件,则只需搜索注册表项HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall即可找到该应用程序的名称。
如果要从“控制面板”中已安装的应用程序列表中删除您的应用程序(例如拒绝卸载),则可以从此“卸载”键中删除该条目。它肯定会从控制面板中的列表中消失,但是Windows仍会记住它。例如,如果您尝试安装同一应用程序的下一个版本,则安装程序可能仍会坚持卸载前一个版本。参见第2项。
2)Windows将原始* .msi文件复制到文件夹C:\ Windows \ Installer中,并将其重命名为随机名称(尽管保留了.msi扩展名)。Windows还会在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.
ValueName“ LocalPackage”的注册表中创建一个注册表项,此注册表项将指向重命名的msi文件。要在C:\ windows \ Installer中找到文件,可以在Windows资源管理器中导航到该文件夹,将其切换到“详细信息”视图,使“主题”列可见,所有nnnnnnnn.msi都将找到其对应的产品名称。