大多数用户还是习惯使用 Windows 自带的文件资源管理器来管理文件,于是我们可以利用它的命令行参数来帮助我们做一些与之相关的交互。
本文会以实际的例子来说明如何使用 explorer.exe 的命令行参数。
打开文件
在命令行中输入 explorer D:\Services\blog.walterlv.com\test.txt
即可打开 test.txt
文件。不过,这个时候是间接使用文件资源管理器打开的文件,效果跟我们直接在文件资源管理器中双击打开这个文件的效果是一样的。
启动程序
实际上利用文件资源管理器启动程序和前面的打开文件是同一种命令,不过我特别拿出来说,是因为使用这种方式来启动程序还有一种特别的功效:
- 可以降权执行
使用方法:
1
explorer D:\Services\blog.walterlv.com\Walterlv.Blog.Home.exe
如果你当前进程是管理员权限,那么可以通过 explorer
间接启动将新启动的进程降低到与 explorer
同级别的权限。
不过,有几点需要注意的:
- 如果用来降权,那么只会降到与文件资源管理器同级别的权限
- 而文件资源管理器是什么权限在 Windows 7 上和 Windows 8/8.1/10 上不同
- Windows 8/8.1/10 无论开关 UAC 都是普通用户权限,除非你特别使用任务管理器(Task Manager)以管理员权限启动文件资源管理器
- Windows 7 在开启 UAC 的情况下,文件资源管理器是以普通用户权限运行的
- Windows 7 在关闭 UAC 的情况下,文件资源管理器是以管理员权限运行的
- 不允许给间接启动的程序携带命令行参数
- 如果你试图传入额外的参数,那么最终不会执行这个程序,只会打开一个根你的程序毫无关系的文件管理器的新窗口而已
explorer
必须是已经启动的状态(大多数时候都是这样)
关于利用文件资源管理器降权执行程序的内容,可以阅读我的另一篇博客:
关于 UAC 权限相关的内容,可以阅读我的另一篇博客:
如果你使用 .NET 程序来完成启动程序的话,可能需要关注 UseShellExecute
。不过利用 explorer
间接启动就无所谓了,无脑设置为 false
就好,因为它自己就相当于 Shell。
打开某个文件夹
1
explorer D:\Services\blog.walterlv.com
选择某个文件
在与其他工具集成的时候,如果有需求要打开某个文件夹,并自动滚动到希望看到的文件选中它,那么这个命令非常有用:
1
explorer /select,"D:\Services\blog.walterlv.com\Walterlv.Blog.Home.exe"
这可以在打开文件资源管理器的同时,选中 Walterlv.Blog.Home.exe
文件,并将它滚动到可视区域。
其他命令行参数
在以上这些命令的基础上,可以添加一些可选参数用来控制如何执行这些命令。
/separate
- 让文件资源管理器在一个新的进程中打开
一些特殊文件夹的命令
打开当前工作路径的根目录:
1
> explorer \
打开“文档”文件夹:
1
2
3
> explorer \\
# 或者
explorer /
打开“计算机”文件夹:
1
2
# 注意,此命令在 CMD 中可以直接执行,在 PowerShell 中需要加上引号,即 ","
explorer ,
参考资料
- How to run Windows Explorer as a different user (so I can do admin work) – Florin Lazar – Consistency Checkpoint
- How to launch Windows Explorer with the privileges of a different domain user? - Super User
本文会经常更新,请阅读原文: https://blog.walterlv.com/post/command-line-usage-of-windows-explorer.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。