首页 > 解决方案 > 使用 32 位启动器运行 .cmd?

问题描述

我花了很多时间试图弄清楚我想要完成的这个简单的事情。我有一个带有一行的 .cmd 文件:sfc /scannow 我将它包装到一个包中,命令行作为程序位于:cmd /c sfc.cmd并且它被设置为根据需要安装并隐藏。(如果这确实运行,我可以查看 cbs 日志)。然后它被部署并下载到测试机器上,我在 ccmcache 文件夹中看到它。查看 execmgr.log 它执行了以下操作:

"C:\Windows\system32\cmd.exe" /c sfc.cmd, Working Directory = C:\Windows\ccmcache\g\

Running "C:\Windows\system32\cmd.exe" /c sfc.cmd with 32bitLauncher

下午 4 点 43 分左右注意到了这两个指标。我没有看到退出代码 0 或任何其他代码。然后查看 cbs.log 最后写入时间是下午 4:19。我究竟做错了什么?

标签: sccm

解决方案


如果我尝试在 64 位 Windows 中从 32 位 cmd 运行 sfc /scannow,我会收到错误消息,因此您可能必须使用技巧来运行 64 位 sfc。

而不是命令行

cmd /c sfc.cmd

利用

C:\windows\sysnative\cmd /c sfc.cmd

Sysnative是一个别名,很遗憾你看不到它,但如果一个程序作为 32 位进程启动,它可以访问它。它的作用是避免 WoW64 重定向,该重定向会拦截对 system32 的每次调用并将其发送到 syswow64,这在您的情况下会导致问题。


推荐阅读