Wscript.Shell Run不能始终如一地工作

时间:2010-08-24 18:25:38

标签: vb6 wsh

我正在尝试在vb6 dll中运行以下代码:

Dim objWSShell As Object
Set objWSShell = CreateObject("Wscript.Shell")
objWSShell.Run strPath & "test.bat", 0, True

dll进程挂起了。无论内容是什么,批处理文件都不会运行。我甚至尝试了一个空的批处理文件,它仍然挂起。但是,如果我尝试使用此更改的同一段代码:

Dim objWSShell As Object
Set objWSShell = CreateObject("Wscript.Shell")
objWSShell.Run "calc", 0, True

工作正常。我无法弄清楚为什么exe文件工作和bat文件不工作。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您不需要使用shell脚本编写的东西,您可以使事情更简单&使用内置的Shell()函数:

shell environ$("COMSPEC") & " /C c:\xxx\yyy.bat", vbNormalFocus 

同上:

shell "calc", vbNormalFocus 

答案 1 :(得分:2)

您需要运行cmd.exe并将BAT文件传递给它。

objWSShell.Run "%COMSPEC% /c " & strPath & "test.bat", 0, True

答案 2 :(得分:1)

我有一个similar issue,批处理文件无法直接从WScript.Shell运行,但我没有权限修改VBScript。事实证明,.bat扩展名上有一个注册表覆盖。

虽然使用COMSPEC为我工作,但删除注册表项实际上修复的不仅仅是WScript问题。