"START"在哪里搜索可执行文件?

wew*_*ewa 0 windows matlab cmd batch-file

在我的公司,我们使用批处理文件来启动Matlab.批处理文件在启动Matlab之前准备环境.

Matlab本身就是以

START MATLAB.EXE
Run Code Online (Sandbox Code Playgroud)

我的系统上安装了几个版本的Matlab.而且这个命令启动了错误的Matlab版本.START在哪里寻找可执行文件?

Mof*_*ofi 8

如果没有使用绝对路径,命令启动发现可执行文件运行,如命令行解释程序cmd.exe,如果文件扩展名也缺失,则另外使用由分号分隔的环境变量PATHEXT中列出的扩展名.

  1. 当前的工作目录.

  2. 环境变量的所有目录路径,以便为列在PATH.

    只需键入命令提示符窗口,set path即可查看PATH中的所有目录以及PATHEXT中的所有文件扩展.

    请注意,每个用户帐户都有自己的PATH.因此,系统帐户的PATH通常与标准用户帐户的PATH不同.这对于使用命令runas运行批处理文件或使用其他帐户运行任务调度程序非常重要.

    Jason Faulkner发布的批处理文件也非常有用.

  3. 开始在密钥下的注册表中查看

    HKEY_CURRENT_USER \软件\微软\的Windows\CurrentVersion\App路径
    HKEY_CURRENT_USER\SOFTWARE\Wow6432Node \微软\的Windows\CurrentVersion\App路径
    HKEY_LOCAL_MACHINE\SOFTWARE \微软\的Windows\CurrentVersion\App路径
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \微软\的Windows\CurrentVersion \应用路径

    使用带有MSI软件包安装的应用程序(嵌入在安装程序的EXE或另行公布)MSIEXEC有自己的文件名称注册应用程序路径包含的可执行文件名与全路径的默认字符串值.通常有第二个字符串值,其名称为Path,仅包含应用程序可执行文件的完整路径.其他安装程序也在注册应用程序App Paths,请参阅Microsoft有关应用程序注册的文章.

注册表配置单元中App Paths键通常不存在,因为使用受信任的安装程序或本地管理员帐户进行安装,因此已安装的应用程序的注册在注册表配置单元中完成.但是在每个用户安装的应用程序上,该路径用于应用程序注册而不是路径. HKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKCUHKLM

Wow6432Node键下的App Paths键仅存在于Windows x64上.但x86应用程序被注册但通常在这两个应用程序路径虽然Wow6432Node是32位应用程序和其它树在Windows 7 X64的64位应用程序,在Windows Server 2008 R2 x64和后来的Windows 64.有关详细信息,请参阅受WOW64影响的 Microsoft文章注册表项.

还有一点说明:

即使有.exe规定,开始搜索在当前工作目录以及在目录路径后,没有发现AppName.exe用于附加AppName.exe.*和检查的文件扩展名(最后一个句号之后的字符串)对文件扩展名PATHEXT如果它返回一个或多个文件名.然而,最好指定要启动的应用程序的文件扩展名,因为AppName.exe如果AppName.exe在当前目录中找不到,则在执行通配符搜索之前始终首先执行搜索.

Sysinternals(Microsoft)的免费工具Process Monitor是一个很好的工具,可以找到类似的东西.

最后但并非最不重要的是,对于没有可执行文件,启动检查HKEY_CLASSES_ROOT以查找文件关联以打开文件或URI(URL)以及为命令打开定义的关联应用程序.这就是为什么像下面这样的东西也有效的原因.

start MyTextFile.txt
start https://stackoverflow.com/
Run Code Online (Sandbox Code Playgroud)

%SystemRoot%\System32\cmd.exe包含start使用Windows shell函数ShellExecuteEx的代码,用于执行应用程序或打开具有关联应用程序的文件或URL.