大多数用户还是习惯使用 Windows 自带的文件资源管理器来管理文件,于是我们可以利用它的命令行参数来帮助我们做一些与之相关的交互。

本文会以实际的例子来说明如何使用 explorer.exe 的命令行参数。


本文内容

  • 打开文件
  • 启动程序
  • 打开某个文件夹
  • 选择某个文件
  • 其他命令行参数
  • 一些特殊文件夹的命令

打开文件

在命令行中输入 explorer D:\Services\blog.walterlv.com\test.txt 即可打开 test.txt 文件。不过,这个时候是间接使用文件资源管理器打开的文件,效果跟我们直接在文件资源管理器中双击打开这个文件的效果是一样的。

启动程序

实际上利用文件资源管理器启动程序和前面的打开文件是同一种命令,不过我特别拿出来说,是因为使用这种方式来启动程序还有一种特别的功效:

  • 可以降权执行

使用方法:

explorer D:\Services\blog.walterlv.com\Walterlv.Blog.Home.exe

如果你当前进程是管理员权限,那么可以通过 explorer 间接启动将新启动的进程降低到与 explorer 同级别的权限。

不过,有几点需要注意的:

  1. 如果用来降权,那么只会降到与文件资源管理器同级别的权限

    • 而文件资源管理器是什么权限在 Windows 7 上和 Windows 8/8.1/10 上不同
    • Windows 8/8.1/10 无论开关 UAC 都是普通用户权限,除非你特别使用任务管理器(Task Manager)以管理员权限启动文件资源管理器
    • Windows 7 在开启 UAC 的情况下,文件资源管理器是以普通用户权限运行的
    • Windows 7 在关闭 UAC 的情况下,文件资源管理器是以管理员权限运行的
  2. 不允许给间接启动的程序携带命令行参数
    • 如果你试图传入额外的参数,那么最终不会执行这个程序,只会打开一个根你的程序毫无关系的文件管理器的新窗口而已
  3. explorer 必须是已经启动的状态(大多数时候都是这样)

关于利用文件资源管理器降权执行程序的内容,可以阅读我的另一篇博客:

  • 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限) - walterlv

关于 UAC 权限相关的内容,可以阅读我的另一篇博客:

  • Windows 中的 UAC 用户账户控制 - walterlv
  • Windows 的 UAC 设置中的通知等级实际上只有两个档而已 - walterlv

如果你使用 .NET 程序来完成启动程序的话,可能需要关注 UseShellExecute。不过利用 explorer 间接启动就无所谓了,无脑设置为 false 就好,因为它自己就相当于 Shell。

  • C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思? - walterlv

打开某个文件夹

explorer D:\Services\blog.walterlv.com

选择某个文件

在与其他工具集成的时候,如果有需求要打开某个文件夹,并自动滚动到希望看到的文件选中它,那么这个命令非常有用:

explorer /select,"D:\Services\blog.walterlv.com\Walterlv.Blog.Home.exe"

这可以在打开文件资源管理器的同时,选中 Walterlv.Blog.Home.exe 文件,并将它滚动到可视区域。

其他命令行参数

在以上这些命令的基础上,可以添加一些可选参数用来控制如何执行这些命令。

  • /separate

    • 让文件资源管理器在一个新的进程中打开

一些特殊文件夹的命令

打开当前工作路径的根目录:

> explorer \

打开“文档”文件夹:

> explorer \\
# 或者
explorer /

打开“计算机”文件夹:

# 注意,此命令在 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/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

Windows 系统文件资源管理器的命令行参数(如何降权打开程序,如何选择文件)相关推荐

  1. 如何将命令行参数传递给Node.js程序?

    我有一个用Node.js编写的Web服务器,我想使用一个特定的文件夹启动. 我不确定如何在JavaScript中访问参数. 我正在像这样运行节点: $ node server.js folder 这是 ...

  2. 控制台发送get命令_.NET Core使用命令行参数库构建控制台应用程序

    前言 在我们开发中可能需要设计一次性应用程序,这些实用程序可以利用接近原始源代码的优势,但可以在与主Web应用程序完全独立的安全性上下文中启动.具体在 [管理过程](https://12factor. ...

  3. python将argv作为参数_在jupyter / ipython notebook中将命令行参数传递给argv

    经过大量的环顾后,我发现了非常繁琐的自定义库,但是用几行代码解决了它,我认为这些代码很漂亮.我使用nbconvert最终得到一个html报告作为输出,包含笔记本中的所有图形和降价,但是通过最小的pyt ...

  4. Python3中使用argparse模块解析命令行参数

    argparse是Python的一个标准模块,用于解析命令行参数,即解析sys.argv中定义的参数.实现在:https://github.com/python/cpython/blob/main/L ...

  5. main函数带命令行参数的使用

    假设程序编译后生成的可执行文件为mycal.exe..在命令行提示符下,通过在windows开始菜单执行cmd命令,出现:c:>,键入mycal 100+200 运行的结果为 300:键入myc ...

  6. 文本编辑器中命令行参数的应用

    文章目录 1 文本编辑器中命令行参数的应用 1 文本编辑器中命令行参数的应用 我们要知道对于每一个应用程序我们都能够接收命令行参数,那么对于GUI系统中命令行参数如何传递到应用程序呢? 主要有如下两种 ...

  7. linux 中解析命令行参数 (getopt_long用法)

    getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下:   #include <getopt.h>        int getopt_long ...

  8. 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数

    我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数 ...

  9. java中的命令行参数_Java中的命令行参数

    java中的命令行参数 Command-line arguments in Java are used to pass arguments to the main program. If you lo ...

最新文章

  1. 【算法知识】详解快速排序算法
  2. Django框架(10.Django中的模型类的定义以及模型类字段属性和选项)
  3. hdu3016 线段树+简单DP
  4. Linux把文件移动到容器外,Docker容器与主机之间拷贝文件的方法
  5. python random从集合中随机选择元素
  6. 期货市场技术分析05_交易量和持仓兴趣
  7. python中用来抛出异常的关键字是( )_python异常抛出
  8. POJ-2262 Goldbach's Conjecture
  9. day 17 - 1 递归函数
  10. LinkButton(按钮)
  11. 动态生成WebService的客户端
  12. web安全测试--基础篇
  13. MKVToolNix v7.4.0 正式版
  14. 最新:2021年7月全国程序员平均薪资出炉!你还坐得住吗?
  15. 尖角科技:个人隐私安全检测系统上线了! !
  16. OSChina 周二乱弹 —— 我的手机指纹解锁和别人不一样
  17. OSPF——LSA讲解
  18. Linux下进入PostgresSQL数据库有哪些比较常用的操作命令
  19. 计算机大数据的前景方向_大数据十大发展方向!
  20. ROS2承上启下【05】:在单个进程中布置多个节点

热门文章

  1. 通过超级终端连接短信猫, 用at指令发短信和打电话
  2. 转:车规芯片的AEC-Q100测试标准
  3. 【博客汇总】UV打印机常见问题汇总(更新中...)
  4. quartusII创建第一个VHDL程序
  5. 投票系统 简易js刷票脚本
  6. 奇葩公司:520不发朋友圈秀恩爱就要劝退!
  7. 高中生学python培养思维能力_python学习(七周七第二章结构化思维及如何学习)...
  8. 贾跃亭所持乐视网股权触及平仓线 部分面临被司法拍卖
  9. 服务器能用系统急救箱吗,360急救(乱用360系统急救箱后果)
  10. Java基础之《JVM性能调优(3)—堆》