通过 CMD 静默卸载程序

kb6*_*b67 31 windows windows-7 64-bit command-line

有没有办法在没有图形界面的情况下卸载程序并通过 CMD 卸载程序?

小智 29

您可以使用 WMIC 在不知道 GUID 等的情况下调用正确的卸载程序。

要查看 Windows 内部已知的程序名称列表:

wmic product get name
Run Code Online (Sandbox Code Playgroud)

查找您的产品名称。它可能与“程序和功能”控制面板中列出的匹配,但并非总是如此。

然后你可以使用

wmic product where name="_my_product_name" call uninstall
Run Code Online (Sandbox Code Playgroud)

执行卸载,AFAIK 应该是静默的(这是我的经验,但在你赌农场之前尝试它。静默可能取决于你的安装程序/卸载程序的构建方式)。

请参阅此处了解更多信息:

microsoft.com 上还有 WMIC 的参考文档。

  • 您可以通过添加 `/node:"<ComputerName>"` 例如:`wmic /node:"someuser-pc" product get name` 来针对远程计算机运行此程序。请确保在名称周围使用“”,否则您将遇到“无效全局开关”错误。还要确保从 CMD 提示符而不是 PowerShell 提示符运行它,因为“无效全局开关”错误的“”解决方法在 PowerShell 提示符下不起作用。 (2认同)

nhi*_*kle 21

根据 Microsoft 的指导原则正确安装自身的每个程序都会在HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. 通常,程序的键是它的 GUID,否则就是程序的名称。在该键中将有一个名为 的条目UninstallString。这包含要执行以卸载程序的命令。

如果您已经提前知道要卸载的内容,那么将其放入批处理文件中应该很容易。但是,当您尝试自动化该过程时,它会变得棘手。您可以使用该reg命令从注册表中获取数据,但它会返回大量围绕给定键的实际值的文本,使其难以使用。您可能想尝试使用 VBscript 或 PowerShell,因为它们有更好的选择来将数据从注册表获取到变量中。


Ƭᴇc*_*007 7

如果您安装了 PowerShell 3(或更高版本),您可以发出 WMI 调用来获取所有命名为某个事物的程序(或“喜欢”某个事物,以进行通配符搜索),然后Uninstall为每个程序调用该方法:

(Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name like '%Partial Name%'").uninstall()


Ste*_*ngs 6

如果程序使用 Windows Installer,您可以使用以下命令之一:

msiexec /q /x <ProductCodeGuid>
msiexec /q /x <PathToMsi>
Run Code Online (Sandbox Code Playgroud)

但是,您可能既没有产品代码,也没有用于安装的原始 MSI 文件。

除此之外,没有通用的卸载命令,因为操作系统“不知道”不使用 Windows Installer 的安装程序。他们可能会提供自己的卸载可执行文件,但该可执行文件是否包含无需 GUI 即可运行它的方法取决于各个软件包。


Ste*_*eve 5

如果您知道 MSI 安装程序文件在哪里,您可以使用:

Msiexec /uninstall Application.msi /quiet