有没有什么方法可以在没有图形界面的情况下卸载程序,并通过 CMD 来执行?
答案1
根据 Microsoft 指南正确安装的每个程序都会在 中创建一个注册表项HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
。通常,程序的键将是其 GUID,或者是程序的名称。该键内将有一个名为 的条目UninstallString
。它包含要执行以卸载程序的命令。
如果您已经提前知道要卸载的内容,那么将其放入批处理文件中应该很容易。但是,当您尝试自动执行该过程时,它会变得很棘手。您可以使用该reg
命令从注册表中获取数据,但它会返回大量围绕给定键的实际值的文本,这使得它很难使用。您可能想尝试使用 VBscript 或 PowerShell,因为它们有更好的选项可以将数据从注册表获取到变量中。
答案2
您可以使用 WMIC 调用正确的卸载程序,而无需知道 GUID 等。
要查看 Windows 内部已知的程序名称列表:
wmic product get name
查找您的产品名称。它可能与“程序和特点”控制面板,但并非总是如此。
然后你可以使用
wmic product where name="_my_product_name" call uninstall
执行卸载,据我所知应该是静默的(根据我的经验,这是应该的,但在你孤注一掷之前先尝试一下。静默可能取决于你的安装程序/卸载程序是如何构建的)。
更多详情请参见此处:
- WMIC:你从未使用过的最佳命令行工具(WMIC 概述,其中描述了许多很酷的命令)
- Windows:从命令行卸载应用程序(具体菜谱)
microsoft.com 上还有 WMIC 的参考文档。
答案3
如果您安装了 PowerShell 3(或更高版本),则可以发出 WMI 调用来获取所有名为某个特定事物的程序(或“类似”某个特定事物,进行通配符搜索),然后Uninstall
对每个程序调用该方法:
(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()
答案4
如果您知道 MSI 安装程序文件的位置,则可以使用:
Msiexec /卸载应用程序.msi /quiet