我花了很多时间试图弄清楚我想要完成的这件简单的事情。我有一个.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我做错了什么?
发布于 2019-05-23 22:42:04
如果我试图在64位的Windows中从32位命令运行sfc /scannow,我得到一个错误,所以你可能不得不使用一个技巧来运行64位sfc。
而不是命令行
cmd /c sfc.cmd
使用
C:\windows\sysnative\cmd /c sfc.cmd
不幸的是,Sysnative是一个你看不到的别名,但是如果一个程序作为32位进程启动,它就可以访问它。它所做的是避免WoW64重定向,即拦截每个对system32的调用并将其发送到syswow64,在您的情况下,这会导致问题。
https://stackoverflow.com/questions/56264903
复制相似问题