进程如何从命令行运行而不在路径前指定驱动器号?

进程如何从命令行运行而不在路径前指定驱动器号?

Synaptics Touchpad Helper 在用户登录时作为计划任务运行。配置为运行可执行文件的命令行是...

"\Program Files\Synaptics\SynTP\SynTPEnh.exe"

您可能认为它安装在 C:\ 驱动器上。尽管乍一看它似乎格式不正确,但任务可以毫无问题地启动该进程。有人能准确解释一下进程如何能够从这样的路径运行而无需指定驱动器号吗?

计划任务命令行属性

答案1

每个进程都有一个当前驱动器和目录,运行计划作业的进程也不例外。

当进程访问文件时,如果没有指定驱动器和目录,Windows 将假定使用当前驱动器和目录。如果指定了目录,但没有指定驱动器,Windows 将假定使用当前驱动器。

在这种情况下,由于路径中没有指定驱动器,Windows 将假定调度程序进程的当前驱动器,该驱动器几乎肯定是系统驱动器 - 通常是 C:

答案2

好吧,它显然假设C:\ 我不认为它格式错误,在(正确的)DOS 中这样做已经 15 年了。在 DOS 的情况下,它会查看您当前所在的驱动器,因此如果您在并且C:\windows您说\blah\bleh然后它就会运行c:\blah\bleh 如果您在D:\>并且您做了\blah\bleh它假设你的意思是d:\blah\bleh 它是一个相对路径,其中路径相对于您所在的目录。这就是 CMD.exe 和 DOS 的情况。任务计划程序可能有一些设置,如启动,告诉它,或者它只是假设 C。但没有任何格式错误,这并不奇怪。这是一个相对路径。就像在某种意义上C:\windows\system32>calc.exe可能是相对的。或者 这与从您所在的任何目录 执行C:\>windows\system32\calc.exe 不同 。而没有前面的反斜杠的执行意味着 windows 必须是当前目录的子目录。C:\blah>\windows\system32\calc.exe\windowswindows

有人可能会针对任务调度程序给出更好的答案,但无论如何。

相关内容