我正在尝试部署并执行 Microsoft 发布的 vbscript (offscrub10.vbs),目的是从系统中删除 Office 2010 的所有痕迹。当我将脚本推送到 64 位系统时,系统会调用 32 位 cscript 来运行它。这导致脚本在尝试验证注册表权限时失败。
当我尝试从系统或本地管理员帐户手动运行脚本并明确调用 32 位 cscript 时,我可以自己复制错误;相反,如果我只运行“cscript”,则 64 位版本会启动并且脚本可以正常工作。我还有 ProcMon 日志,其中显示在命令行中调用了 64 位 cscript,但在进程可执行文件的路径中列出了 32 位版本。
我该如何解决这个问题?显然,脚本中的一些逻辑不适合在 64 位 PC 上以 32 位运行,但这是一个 Microsoft 脚本,我不想修改它并破坏其他东西。
我正在使用 KACE 进行部署,这似乎是问题所在,因为本地代理是 32 位进程。我已将部署脚本配置为显式调用 64 位 cscript,将其包装在批处理文件和 PowerShell 脚本中,并尝试调用 64 位 cmd.exe 来运行 cscript,但随后 cmd.exe 默认为 32 位,我们又回到了绘图板。
显然,修复此问题的理想位置是 vbscript 本身或 kbox,我也从 KACE 角度进行此工作,但我试图在这里涵盖所有基础。
答案1
我认为您遇到的问题是由于 64 位 Windows 具有针对 32 位进程的功能(称为文件夹重定向)。这会导致路径从 %windir%\system32 转到 %windir%\sysWOW64
有一个解决方法,但是我已经有一段时间没用过了。在调用 cscript 的完整路径中,使用以下命令:
%WinDir%\Sysnative
这应该允许 32 位 KACE 进程访问 system32 目录中的文件(在本例中为 cscript)。
这里还有更多信息:
http://support.microsoft.com/kb/942589
希望这对你有用。