VBScript - 打开带有32位cmd的批处理文件
我有一个.hta应用程序和下面的代码。VBScript - 打开带有32位cmd的批处理文件
默认情况下,下面的命令打开file.bat在C:\ WINDOWS \ SysWow64资料 \ cmd.exe的
我如何得到它使用C打开:\ WINDOWS \ SYSTEM32 \ CMD。可执行程序?
解决方法是使用C:\ Windows \ system32 \ mshta.exe打开.hta文件而不是syswow64,但我希望看到其他想法。
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "file.bat"
非常感谢提前。
显然C:\Windows\system32\cmd.exe
从32位环境下启动时实际运行C:\Windows\SysWOW64\cmd.exe
。因此,正如Bill Stewart和Ilya Kurnosov所建议的那样,您必须调整32位PowerShell的执行策略。有3种方法可以执行此操作:
使用系统或域策略全局设置执行策略。然而,这条路线对你来说似乎不可行,因为你说你在服务器上没有管理员权限。
通过在服务器上手动启动
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
并运行命令Set-ExecutionPolicy RemoteSigned
来设置每个用户的执行策略。这必须为每个用户完成,并且如果执行策略被组策略锁定(见上),将不会工作。-
绕道通过
file.bat
加入-ExecutionPolicy Bypass
到PowerShell的调用命令行执行策略:powershell.exe -ExecutionPolicy Bypass -NoLogo -File file.ps1
建议的信用实际上应该去@Bill_Stewart。我只是对他的建议发表了一个小评论。 – 2013-05-15 06:45:45
我不知道如何选择他的答案,因为他只发表评论 – AdrianM 2013-05-16 20:32:31
这可能会起作用。
objShell.Run "%SystemRoot%\system32\cmd.exe /c file.bat"
我认为它也是如此,但是从32位HTA,该命令实际上启动了32位'cmd.exe',尽管明确地调用了64位可执行文件。 – 2013-05-14 11:33:08
如果您指定%SystemRoot%\ system32 \ cmd.exe,您没有明确地从32位可执行文件调用64位cmd.exe,因为%SystemRoot%\ system32自动被重定向到%SystemRoot%\ SysWOW64 WOW64文件系统重定向器。 – 2013-05-14 18:07:01
@Bill_Stewart我明白了。感谢您的更正。 – 2013-05-15 09:50:31
什么发人深省的问题? – 2013-05-12 16:46:42
该批处理文件打开一个PowerShell脚本。出于某种原因,powershell脚本在system32 cmd中工作正常,但由于策略受限制,无法在syswow64 cmd上执行。 – AdrianM 2013-05-12 17:25:24
'C:\ Windows \ system32 \ cmd.exe'是64位版本,'C:\ Windows \ Syswow64 \ cmd.exe'是32位版本,看起来很迷惑。 – 2013-05-12 22:27:40