msi 产品代码是形如 {guid} 的唯一标识,常用于静默卸载、修复和补丁匹配。优先查询卸载注册表,而不是使用 win32_product 全量枚举,因为后者可能触发 msi 一致性检查并尝试修复已安装软件。
用 PowerShell 查询卸载项
在 PowerShell 中同时查询 64 位和 32 位卸载分支,按显示名称筛选目标程序,并输出 DisplayName、DisplayVersion、UninstallString 与 PSChildName。常用路径是 HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* 和 HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*;用户级安装还要查 HKCU 对应分支。

在注册表中确认 GUID 子项
打开注册表编辑器,定位到搜索结果对应的 Uninstall 子项。真正由 MSI 注册的产品通常以带花括号的 GUID 作为子项名,右侧 DisplayName 应与目标软件一致,UninstallString 常包含 MsiExec.exe /I{GUID} 或 /X{GUID}。只读取并复制代码,不要修改或删除该子项。

从卸载命令再次核对代码
在同一卸载子项中检查 ModifyPath 与 UninstallString。两项如果都指向同一个 MsiExec.exe GUID,且 DisplayName、DisplayVersion、Publisher 与目标软件一致,才把该 GUID 作为产品代码。不同版本、语言包和组件可能各有一个代码,不能只看名称相似就直接执行卸载。












