我有一个启动应用程序的ActiveX脚本。
var shell = new ActiveXObject("WScript.Shell");
shell.run('appli.exe');
脚本运行正常。不过,如果我打开cmd.exe并输入appli.exe
我收到错误,那是一个未知的命令。
Appli.exe放在C:\ Programs ...中,shell.CurrentDirectory给出C:\Users\ABC\Desktop
。所以WorkingDir不能成为答案,为什么它在WScript.Shell中工作以及为什么它不在CMD中。
那么WScript.Shell如何找到Appli.exe的路径以及为什么cmd.exe无法找到它?
答案 0 :(得分:2)
有几种方法可以在Windows中启动进程。 Run
对象的WScript.Shell
方法使用ShellExecute
(或其ShellExecuteEx
的变体)。此Windows API函数使用与ex不同的条件。 CreateProcess
(从命令行直接调用应用程序使用)来定位应用程序。
两个API函数之间的区别之一是它们寻找应用程序的位置。
CreateProcess
在当前活动目录,父进程当前活动目录,Windows系统目录和路径中包含的目录中进行搜索。
ShellExecute
(或ShellExecuteEx
)also checks注册表项的内容
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
HKEY_CLASSES_ROOT\Applications
您可以使用命令行中的start
命令复制相同的行为,以启动您的应用程序。
start appli.exe