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" 

非常感谢提前。

+0

什么发人深省的问题? – 2013-05-12 16:46:42

+1

该批处理文件打开一个PowerShell脚本。出于某种原因,powershell脚本在system32 cmd中工作正常,但由于策略受限制,无法在syswow64 cmd上执行。 – AdrianM 2013-05-12 17:25:24

+1

'C:\ Windows \ system32 \ cmd.exe'是64位版本,'C:\ Windows \ Syswow64 \ cmd.exe'是32位版本,看起来很迷惑。 – 2013-05-12 22:27:40

显然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 
    
+0

建议的信用实际上应该去@Bill_Stewart。我只是对他的建议发表了一个小评论。 – 2013-05-15 06:45:45

+0

我不知道如何选择他的答案,因为他只发表评论 – AdrianM 2013-05-16 20:32:31

这可能会起作用。

objShell.Run "%SystemRoot%\system32\cmd.exe /c file.bat" 
+0

我认为它也是如此,但是从32位HTA,该命令实际上启动了32位'cmd.exe',尽管明确地调用了64位可执行文件。 – 2013-05-14 11:33:08

+3

如果您指定%SystemRoot%\ system32 \ cmd.exe,您没有明确地从32位可执行文件调用64位cmd.exe,因为%SystemRoot%\ system32自动被重定向到%SystemRoot%\ SysWOW64 WOW64文件系统重定向器。 – 2013-05-14 18:07:01

+0

@Bill_Stewart我明白了。感谢您的更正。 – 2013-05-15 09:50:31