如何创建远程删除多台Windows机器mrt.exe的包?脚本报错求助
解决远程删除mrt.exe时“路径未找到”的问题
问题原因
- 32位进程的文件系统重定向:当32位程序访问
C:\Windows\System32时,Windows会自动将请求重定向到C:\Windows\SysWOW64(存放32位系统文件的目录),而mrt.exe实际在64位的System32目录下,导致脚本找不到目标文件。 - 从日志中的执行路径
C:\Program Files (x86)\Tanium\...可以确认,Tanium客户端以32位进程运行,因此它启动的PowerShell也是32位环境。
解决方案
方案1:使用SysNative路径访问64位System32
修改脚本,用C:\Windows\SysNative替代C:\Windows\System32,这个路径是32位进程专门用来访问64位系统文件目录的入口:
Remove-Item "C:\Windows\SysNative\mrt.exe" -Force
方案2:强制启动64位PowerShell
修改执行命令,直接指定64位PowerShell的路径,绕过32位环境的重定向:
cmd /c "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NonInteractive -NoProfile -File .\MRT_removal.ps1"
方案3:在脚本内禁用文件系统重定向
通过PowerShell调用Windows API临时禁用重定向,执行删除操作后再恢复:
# 禁用32位进程的文件系统重定向 $win32Assembly = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Win32") $redirectState = $win32Assembly.GetType("Microsoft.Win32.Win32Native")::Wow64DisableWow64FsRedirection() # 执行删除操作 Remove-Item "C:\Windows\System32\mrt.exe" -Force # 恢复文件系统重定向 $win32Assembly.GetType("Microsoft.Win32.Win32Native")::Wow64RevertWow64FsRedirection($redirectState)
注意事项
- 确保执行脚本的账号拥有管理员权限,否则即使路径正确,也会因权限不足无法删除
System32目录下的文件。 mrt.exe是Windows官方的恶意软件删除工具组件,删除前需确认业务场景允许此操作,避免影响系统安全防护能力。
内容的提问来源于stack exchange,提问作者kbhardwaj90
相关产品推荐
相关产品推荐

