我想使用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
答案 0 :(得分:0)
startup = shellobj.specialfolders("%appdata%\Microsoft") &"\msg.exe"
SpecialFolders
属性不会扩展环境变量。您需要ExpandEnvironmentStrings
方法:
shellobj.ExpandEnvironmentStrings("%APPDATA%\Microsoft") & "\msg.exe"
SpecialFolders
属性必须像这样使用:
shellobj.SpecialFolders("APPDATA") & "\Microsoft\msg.exe"
if filesystemobj.fileexists(startup) Then
由于specialfolders("%appdata%\Microsoft")
返回一个空字符串,startup
的值变为\msg.exe
,这不存在。因此,Then
分支中的语句永远不会执行。
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