VBScript - 使用32位cmd打开批处理文件

时间:2013-05-12 16:25:21

标签: batch-file vbscript cmd system32 syswow64

我有一个.hta应用程序和下面的代码。

默认情况下,以下命令在C:\ Windows \ syswow64 \ cmd.exe中打开file.bat

如何使用C:\ Windows \ system32 \ cmd.exe打开它?

解决方法是使用C:\ Windows \ system32 \ mshta.exe而不是syswow64打开.hta文件,但我希望看到其他想法。

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "file.bat"

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

从32位环境启动时,显然C:\Windows\system32\cmd.exe实际运行C:\Windows\SysWOW64\cmd.exe

因此,正如Bill Stewart和Ilya Kurnosov建议的那样,您必须调整32位PowerShell的执行策略。有三种方法可以做到这一点:

  • 使用系统或域策略全局设置执行策略。但是,这条路线对您来说似乎不太可行,因为您说您在相关服务器上没有管理员权限。

  • 通过在服务器上手动启动C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe并运行命令Set-ExecutionPolicy RemoteSigned,为每个用户设置执行策略。必须为每个用户执行此操作,如果使用组策略锁定执行策略,则无法执行此操作(参见上文)。

  • 通过在-ExecutionPolicy Bypass中的PowerShell调用中添加file.bat来绕过命令行上的执行策略:

    powershell.exe -ExecutionPolicy Bypass -NoLogo -File file.ps1
    

答案 1 :(得分:0)

这可能会起作用。

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