You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知MSI应用卸载方法,如何用PowerShell卸载EXE安装的Windows应用?

如何用PowerShell卸载EXE安装的Windows应用程序

和MSI应用的卸载思路类似,EXE安装的程序通常也会在Windows注册表中注册卸载信息,你可以通过PowerShell读取这些信息并执行卸载命令。以下是具体步骤和示例:

1. 定位注册表中的卸载项

EXE程序的卸载信息一般存放在两个注册表路径下(覆盖64位和32位程序):

  • HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
  • HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*

使用Get-ItemProperty命令读取这些路径下的所有卸载项,过滤出包含程序名称和卸载命令的条目:

$allUninstallEntries = Get-ItemProperty -Path @(
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
    'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
) | Where-Object { $_.DisplayName -and $_.UninstallString }

2. 提取目标程序的卸载命令

从结果中筛选出你要卸载的程序,优先使用QuietUninstallString(如果存在)实现静默卸载,否则使用UninstallString:

# 替换为你要卸载的程序名称(支持模糊匹配)
$targetProgramName = "XXX软件"
$targetEntry = $allUninstallEntries | Where-Object { $_.DisplayName -like "*$targetProgramName*" }

if (-not $targetEntry) {
    Write-Host "未找到目标程序的卸载信息"
    exit
}

# 确定最终卸载命令
$uninstallCommand = if ($targetEntry.QuietUninstallString) {
    $targetEntry.QuietUninstallString
} else {
    $targetEntry.UninstallString
}

3. 执行卸载命令

由于卸载命令可能包含带引号的路径和参数,需要拆分命令和参数避免执行错误,使用Start-Process执行:

# 处理带引号的命令路径
if ($uninstallCommand -match '^"([^"]+)"(.*)$') {
    $exePath = $matches[1]
    $arguments = $matches[2].Trim()
    Start-Process -FilePath $exePath -ArgumentList $arguments -Wait -NoNewWindow
} else {
    # 处理不带引号的简单命令
    Start-Process -FilePath $uninstallCommand -Wait -NoNewWindow
}

Write-Host "目标程序卸载命令已执行"

关键注意事项

  • 卸载参数差异:不同厂商的EXE卸载程序参数不统一,常见的静默参数有/S、/quiet、/uninstall /silent等,如果默认的卸载命令无效,需要查阅该程序的官方文档获取正确参数。
  • 管理员权限:卸载系统级程序通常需要管理员权限执行PowerShell脚本。
  • 无注册表项的情况:部分绿色版或未注册的EXE程序不会写入注册表,此时需要手动找到安装目录下的uninstall.exe或setup.exe,直接指定路径并添加对应参数执行。

内容的提问来源于stack exchange,提问作者Gunacelan M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:30:27