0

我想使用 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
4

1 回答 1

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
    
于 2013-10-03T11:53:29.097 回答