我有一个.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"
非常感谢提前。
答案 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"