答案1
Windows 运行框尝试调用Shell.ShellExecute 方法
(注册文件类型的默认操作)针对输入栏中的文本指定的文件,即当前目录中的文件,即%USERPROFILE%
!
假设我们MyLoc Sets
在这里写下并点击Enter
。
首先,该词MyLoc
被认为是一个命令。shell在当前目录中搜索可执行变体,例如,,,,...,然后在环境变量指定的目录中搜索,
MyLoc.com
然后在和配置单元 下搜索注册表项。作为最后的手段,shell在相同位置(注册表除外) 搜索文件夹。MyLoc.exe
MyLoc.bat
MyLoc.cmd
%PATH%
\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Myloc.exe
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
MyLoc Sets
文件未找到错误...
现在,尝试Local Settings
:未找到名为 的可执行文件Local
,但在 下找到了一个同名文件夹%USERPROFILE%
!因此,文件夹被注册为文件类型,而文件夹的默认操作曾经是“探索",则可以通过该ShellExecute
方法执行...
答案2
正如 Arakel 所说,这里有两个不相关的特征:
- 用作的环境变量
%variable%
,例如%USERPROFILE%
- 输入的命令没有
%...%
, 例如documents
。
实际上,前几个只是具有值的宏。语法%...%
只是将变量名称转换为文本,然后执行此文本,就像将其输入到运行框中一样。
首先在指定的文件夹中搜索输入的文本PATH 环境变量
和 中%USERPROFILE%
。在这种情况下,输入的整个文本必须等于文件夹名称。例如, 为“documents” C:\Users\<user>\Documents
, 为“videos”
C:\Users\<user>\Videos
。
如果未找到同名文件夹,则输入框中的第一个单词将被视为命令,而后面的单词将被视为参数。包含空格等分隔符的单词需要用引号引起来。
如果输入的命令名称与文件夹名称不匹配,Windows 将尝试在 PATH 中查找具有该确切名称的可执行文件。如果命令没有后缀,Windows 将尝试所有可执行文件后缀,例如.exe
或.bat
(以及更多)。实际上有数百个命令名称可以通过这种方式输入。
例如,输入calc
将启动 Windows 计算器,它是可执行文件
C:\Windows\System32\calc.exe
,因为C:\Windows\System32
它在 PATH 中。
可以通过这种方式创建自己的运行命令:
- Win+R打开运行对话框
- 输入
%windir%
打开Windows目录 - Alt+F W S打开文件菜单,选择新建菜单项,然后选择快捷方式菜单项
- 按照向导创建所需程序或文件夹的快捷方式
- 快捷方式的名称就是您在运行框中输入的用于启动该程序的名称。
另一种方法是通过注册表完成(不推荐)。微软称之为应用程序注册。
运行 Regedit 并导航到以下键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
右键单击该
App Paths
键并选择新建/键命令。- 为新密钥指定一个 2-8 个字符的名称,后跟
.exe
- 将该项目的值更改为
(Default)
程序的完整路径。
例如,此示例注册表文件允许ie
在运行框中键入以下内容以打开 Internet Explorer:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ie.exe]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe"
答案3
似乎运行箱只是一个 GUI 版本的start
命令,带有默认/d %userprofile%
开关值,用于设置起始目录的路径
就像它对其他命令做出反应一样%path%
,%pathext%
等等特殊的环境变量
此外,它理解直接打开网页的模式,例如ctrl+ r(或start
)www.superuser.com
使用默认的 Web 浏览器应用程序打开网站,因为它知道参数是网址这次
这些环境变量的有趣部分是它们所包含的列表中项目的顺序,因为它对于设置搜索优先级很重要,并且在查找同名文件或目录时很重要