我正在努力从我的VBScript .vbs文件中运行程序。用行替换MsgBox工作正常,所以我知道它绝对是“开放程序”行(oShell.Run("Release\My Application.exe")
)。
无论如何,这是一个名为start.vbs
的VBscript,它从USB驱动器的根目录运行。它检查是否安装了.net framework 4.0,如果是,那么它应该运行My Application.exe
(注意空格......它可能会有所不同)。 My Application.exe
位于名为Release
的文件夹中。
因为它是一个USB驱动器我不能使用显式驱动器号,例如:oShell.run("e:\Release\My Application.exe")
虽然尝试这也似乎不起作用。在cmd窗口中键入"e:\Release\My Application.exe"
可以正常工作,并按计划运行该程序。
在vbscript中,它似乎没有做任何事情。有什么原因吗?
这是我的代码:
Option Explicit
Dim oShell
Dim value
On Error Resume Next
Set oShell = CreateObject("WScript.Shell")
value = oShell.RegRead("HKLM\SOFTWARE\Microsoft\.NETFramework\Policy\v4.0\30319")
If Err.Number = 0 Then
'Here I am struggling
oShell.Run("Release\My Application.exe")
Else
MsgBox("Version 4.0 of the .NET Framework is NOT installed.")
End If
我在上面评论了不起作用的一行。
谢谢。
答案 0 :(得分:1)
不太确定这是否是最佳答案,但我尝试了它并且它有效,所以我会继续发表我的想法。 我只是使用explorer.exe作为中介,并能够打开该文件。 所以你坚持使用的那条线可能会变成:
oShell.Run("explorer ""Release\My Application.exe""")
我试过它,如果它可以在不在系统路径中的文件夹中工作,并且能够打开可执行文件。
注意:可能有更好的方法。
更新:Thomas报告说以下代码对他有用(方法更好),但两种方法背后的想法是引用路径(就像在命令提示符中那样做,所以路径中有空格的文件名/文件夹已正确解析):
oShell.run("""Release\My Application.exe""")