我花了很多时间试图弄清楚我想要完成的简单事情。我有一个.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 PM。我在做什么错了?
答案 0 :(得分:2)
如果我尝试在64位Windows中从32位cmd运行sfc / scannow,则会出现错误,因此您可能必须使用技巧来运行64位sfc。
代替命令行
cmd /c sfc.cmd
使用
C:\windows\sysnative\cmd /c sfc.cmd
Sysnative是一个别名,您看不到它,但是如果程序以32位进程启动,则可以访问它。它的作用是避免WoW64重定向,该重定向会拦截对system32的每个调用,并将其发送到syswow64,在您的情况下会导致问题。