0

我有一个 .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"

提前谢谢了。

4

2 回答 2

2

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

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

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

  • C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe通过在服务器上手动启动并运行命令来设置每个用户的执行策略Set-ExecutionPolicy RemoteSigned。这必须为每个用户完成,如果执行策略被组策略锁定(见上文),则该操作将不起作用。

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

    powershell.exe -ExecutionPolicy Bypass -NoLogo -File file.ps1
    
于 2013-05-12T22:28:08.333 回答
0

这可能会奏效。

objShell.Run "%SystemRoot%\system32\cmd.exe /c file.bat"
于 2013-05-12T22:26:51.507 回答