难以从我的脚本运行程序

时间:2011-11-21 14:39:18

标签: vbscript

我正在努力从我的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

我在上面评论了不起作用的一行。

谢谢。

1 个答案:

答案 0 :(得分:1)

不太确定这是否是最佳答案,但我尝试了它并且它有效,所以我会继续发表我的想法。 我只是使用explorer.exe作为中介,并能够打开该文件。 所以你坚持使用的那条线可能会变成:

oShell.Run("explorer ""Release\My Application.exe""")

我试过它,如果它可以在不在系统路径中的文件夹中工作,并且能够打开可执行文件。

注意:可能有更好的方法。

更新:Thomas报告说以下代码对他有用(方法更好),但两种方法背后的想法是引用路径(就像在命令提示符中那样做,所以路径中有空格的文件名/文件夹已正确解析):

oShell.run("""Release\My Application.exe""")