vbscript从特殊文件夹启动exe文件

时间:2013-10-03 10:45:09

标签: vbscript

我想使用vbscript启动一个来自特殊文件夹的消息框的exe,但我什么都没得到。这是我的代码

option explicit
dim shellobj,startup,objShell,objFolder,filesystemobj,installdir,installname
set shellobj = wscript.createobject("wscript.shell")
set filesystemobj = createobject("scripting.filesystemobject")
Set objShell = CreateObject("Shell.Application")
installdir = "%appdata%\Microsoft"
installname = wscript.scriptname
filesystemobj.copyfile wscript.scriptfullname,installdir & installname,true
startup = shellobj.specialfolders("%appdata%\Microsoft") &"\msg.exe"
if filesystemobj.fileexists(startup) Then
  shellobj.run "wscript.exe //B " & chr(34) & startup & chr(34)    
  Wscript.Quit
end if

1 个答案:

答案 0 :(得分:0)

  1. startup = shellobj.specialfolders("%appdata%\Microsoft") &"\msg.exe"

    SpecialFolders属性不会扩展环境变量。您需要ExpandEnvironmentStrings方法:

    shellobj.ExpandEnvironmentStrings("%APPDATA%\Microsoft") & "\msg.exe"
    

    SpecialFolders属性必须像这样使用:

    shellobj.SpecialFolders("APPDATA") & "\Microsoft\msg.exe"
    
  2. if filesystemobj.fileexists(startup) Then

    由于specialfolders("%appdata%\Microsoft")返回一个空字符串,startup的值变为\msg.exe,这不存在。因此,Then分支中的语句永远不会执行。

  3. shellobj.run "wscript.exe //B " & chr(34) & startup & chr(34)

    即使存在“\ msg.exe”,也无法使用wscript.exe运行它。 wscript.exe是VBScripts的解释器之一。将该声明更改为:

    shellobj.Run Chr(34) & startup & Chr(34), 1, True