Explorer到底是什么东西?—— 没那么简单,恳求解惑!

A_Zhao 2012-01-02 10:37:51
Explorer(Explorer.exe)到底是什么东西?

【系统背景】

Microsoft Windows 7 64位 旗舰版 简体中文版
(下简称“本Windows系统”)

【不止一个】

在本Winsows系统中,有叁个Explorer.exe,它们分别位于以下叁个不同的系统文件夹中:

C:\Windows
C:\Windows\System32
C:\Windows\SysWOW64

系统给出的上述三个Explorer.exe的版本号完全相同,均为6.1.7601.xxxx;但经过对文件的校验(Check)可知:分别位于C:\Windows\System32与C:\Windows\SysWOW64这两个文件夹中的两个Explorer.exe文件,完全相同(虽然它们分别位于“xx32”和“xx64”两个不同的位置),而位于C:\Windows文件夹中的Explorer.exe文件,却与它们不同,文件大小略小。


【扮演Shell的角色】

我们知道,Microsoft官方为本Windows操作系统配备的Shell就是Explorer.exe。我的一些粗略的理解是:Shell这个角色,承担着实现用户与Windows操作系统之间某些最基本的对话的任务,具体地说,就是以文件操作为主要内容,比如打开(包括运行/执行)、复制、删除、移动文件,以及查看与修改文件属性等操作。

TaskInfo或类似的进程/线程监控软件给出的信息是:扮演这个Shell角色的Explorer.exe,是位于C:\Windows文件夹中的那个,它的默认(当前)目录环境(Curr Dir)是C:\Windows\system32\,它由C:\Windows\system32\winlogon.exe即“Windows Logon Application”来开启运行,即它的父进程是winlogon.exe —— 运行中的Explorer.exe的Parent PID字段的值印证了这一点。

那么,第一个问题就来了:

既然C:\Windows\Explorer.exe担当了Shell,那么,C:\Windows\System32和C:\Windows\SysWOW64文件夹中的Explorer.exe,又是做什么用的呢?


【Explorer.exe与winlogon.exe的亲密关系】

上面粗略地谈到了我对Explorer.exe身为Shell这个事实的理解,但是,如果要再深究一层的话,问题就又来了。

请注意我下面所描述的各个操作的详细而具体的步骤。

我们都知道,当登录本Windows系统之后,第一个出现在用户面前的界面,就是任务栏与桌面图标。我们有理由相信这个{任务栏+桌面图标}是Explorer.exe程序的一部分。此时的Explorer.exe的父进程是winlogon.exe。

就在这时,我利用“命令提示符”(Windows Command Processor)工具,运行“taskkill”命令来“终止(本程序官方使用的动词是‘Terminate’)”掉Explorer.exe程序,系统所反馈出的结果是“关闭Windows”的对话界面。

然而,此时我若利用“Windows 任务管理器(taskmgr.exe)”来“结束(E) (根据这个“E”猜想,本程序官方使用的动词很可能是‘End’)”掉Explorer.exe程序,结果却不同,{任务栏+桌面图标}一同消失了。

再然而,此时我若利用第三方进程管理软件TaskInfo程序,来“终结(本程序官方使用的动词是‘Terminate’)”掉Explorer.exe程序,结果就又不同,{任务栏+桌面图标}消失后,又倏然重新“自动复活”。根据对此刻“复活”了的Explorer.exe的Parent PID的观察,可以知道:“自动复活”了Explorer.exe程序的,是winlogon.exe,即其父进程。而且,值得注意的是:当令{任务栏+桌面图标}消失之后,可以利用taskmgr.exe、cmd.exe(Windows Command Processor)将其“复活”,然后,再利用TaskInfo程序“Terminate”掉 Explorer.exe,Explorer.exe就又“自动复活”,而令其“自动复活”的父进程必定是winlogon.exe。

再再然而,此时我若利用第三方进程管理软件TaskInfo程序,来“关闭(本程序官方使用的动词是‘Close’)”掉Explorer.exe程序,那么,结果就与“taskkill”命令的“终止(本程序官方使用的动词是‘Terminate’)”行为的结果一致 ——系统所反馈出的结果是“关闭Windows”的对话界面。

那么,现在就又有三个问题:

(一)在第三方进程管理软件TaskInfo程序中,“Close”与“Terminate”操作的意义是完全不同的,而其中的“Close”又与“taskkill”命令的“Terminate”的果效一致(如前段所述)。那么,就以TaskInfo程序中的操作名称来说,“Close”与“Terminate”两种操作,实质的区别是什么?也就是说,当分别执行这两个操作时,TaskInfo程序到底令操作系统在幕后做了什么?

(二)由上述现象又可大致归纳得到:TaskInfo程序中的“Terminate”操作,与Windows 任务管理器(taskmgr.exe)的“结束(E)(可能是End)”操作,这两者的果效有相同之处,就是{任务栏+桌面图标}都消失了。而不同之处在于,taskmgr.exe的“结束(E)”操作让{任务栏+桌面图标}彻底消失不得“复活”,而第三方进程管理软件TaskInfo程序的“Terminate”操作令{任务栏+桌面图标}消失后,winlogon.exe又令Explorer.exe迅速“自动复活”,{任务栏+桌面图标}随之重现。这样看来,Explorer.exe与winlogon.exe有着不一般的“亲密关系”,后者仿佛是前者的“守护天使”—— 一旦有第三方软件令前者消失,后者就立刻令前者“自动复活”。那么,问题就是:这前后二者的“亲密关系”,是怎样在操作系统中实现的呢?

(三)进一步地追问:到底还有没有其他什么第三方进程/线程监控软件,可以达到Windows 任务管理器(taskmgr.exe)的“效级(Power Level)”,一次性地彻底Terminate或End掉Explorer.exe,且不再能被winlogon.exe“自动复活”呢?


【Shell vs 任务栏+桌面图标vs 资源管理器】

接下来,我们继续做实验,在{任务栏+桌面图标}存有的情况下,利用taskmgr.exe、cmd.exe(Windows Command Processor)、Explorer.exe的“运行”等工具, “运行”或执行“explorer”—— 实际打开的就是C:\Windows\explorer.exe,那么,一个新窗口就被开启了,这个新窗口(所在的)程序,应该被叫做“Windows资源管理器”。那么,监视正在运行的程序的信息,也可以确定,Windows资源管理器这个程序也正是C:\Windows\explorer.exe。

那么,问题自然就来了:同样一个C:\Windows\explorer.exe,显然肩负了{任务栏+桌面图标}以及{Windows资源管理器}这两大人机对话界面任务。这前后两项不同的界面任务,在explorer.exe这同一个程序中,是如何被分配与激活的呢?其中的机制是怎样的呢?

更深一步地实验,可以揭示出上面这个问题的复杂性:

利用Windows 任务管理器(taskmgr.exe)“结束(E)”掉Explorer.exe,结果上面已经说过了,就是{任务栏+桌面图标}一同消失,此时,再利用Windows 任务管理器(taskmgr.exe)、cmd.exe(Windows Command Processor)这些本Windows系统自带的工具,“运行”或执行“explorer”,结果是{任务栏+桌面图标}一同“复活”。

然而,如果此时(就是{任务栏+桌面图标}一同消失之后)利用第三方命令提示符工具如PowerCmd,来执行“explorer”,结果却不同,那就是{任务栏+桌面图标}不会“复活”,而是会开启一个Windows资源管理器窗口。

看似同样地运行或执行“explorer”,本Windows系统自带的工具与第三方工具,两者的果效就是不同,它们分别对应着Explorer.exe“里面”不同的两项功能 —— 这如何来解释?

【印象总结】

经历了上面所述的一切,我的意识中就有了这么一种印象:

本Windows系统自带的工具,其“效级(Power Level)”就是比第三方工具的更高。

而第三方工具软件,看似可以代替Windows系统自带的工具,如资源管理器、命令提示行、甚至是Shell,但实质与果效大相径庭。

在本Windows系统中,第三方工具软件似乎始终处于“二等公民”的地位。

那么,这样看来,利用第三方工具软件,彻底(尽最大可能地从系统底层)取代Windows系统自带的工具,还不是那么简单与容易。

关于本帖子中所涉及的问题,还可以参考本人的另外一篇帖子:
《突然间,各程序的“手”全断了!—— 困扰了我好几天,求大虾赐教!》

http://topic.csdn.net/u/20111228/19/77679258-85a3-4847-800e-b5f5cf2b852b.html

而对于本帖子中所提到的种种问题与疑惑,期盼各位大虾、高人,不吝赐教、指点迷津!

非常感谢!


...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
陷落成爱 2012-01-12
  • 打赏
  • 举报
回复
简单来说就是桌面,搜索用的,楼主的介绍真是全面啊!
楚天乐 2012-01-04
  • 打赏
  • 举报
回复
Explorer其实是一个子系统外壳程序。
他还会做一些缓存处理,比如你打开一个记事本的时候,他会在打开之前预读一部分数据。

ACMAIN_CHM 2012-01-04
  • 打赏
  • 举报
回复
就是你的主界面,
飃颻 2012-01-03
  • 打赏
  • 举报
回复
樓上的文章很有水平,從字面上Explorer是探索者的意思,
我理解使用這個軟件就是不斷探索的一個過程,沒有終極的答案。
TDsfly 2012-01-03
  • 打赏
  • 举报
回复
楼主解释很全面啊
窗外雨潇潇 2012-01-03
  • 打赏
  • 举报
回复
64位win7旗舰版,system32目录下并无explorer.exe文件(至少我的是这样,我的iso是下载的原版iso镜像,升级至sp1),%windir%和%windir%\SysWOW64的两个explorer.exe分别对应x64和x32版本,此外,在%windir%\winsxs路径下的不同子目录下,还分别存在20个explorer.exe,分别为x64和x32版本。
windows自带的进程高于第三方的级别,这是毫无疑问的。比如以uac为例,系统自带的程序无一需要uac认证,第三方的程序就无此特权。所以,第三方的程序如你所说,是始终处于“二等公民”的地位。
至于explorer.exe的运行机制,没做过深入研究,看这方面的高手如何解释吧。
Hummingbird Exceed v13 2008, 64位版, part1。 共两部分。下载后需合并解压缩。 包含了一个中文手册文件 ExceedManualCn.pdf。 -------- Hummingbird Exceed,结合了PC和X计算环境。Exceed提供从Windows 桌面到许多类型的计算平台的访问,包括UNIX,Linux,VMS,X Window System,IBM mainframes,和 Internet。 Exceed 允许用户从带有Xweb的网络浏览器显示X 客户端,既可以跨企业内部网,又可以跨国际网。 主要特点和优点: Hummingbird HostExplorer Deployment Wizard Add-on 这个新型外接附件允许管理员从任何网络服务器将HostExplorer配置为具有用户化的外观。 完全的Windows 2000 支持——包括Microsoft Installer和Advertised install支持。 载入优化——选择主机,具有最出色的处理能力来开展X 程序。 支持常见的登录(Single Sign-on)——允许用户无缝连接到UNIX/Linux和X程序。 多语言支持——所有Hummingbird Host Access Solutions 产品除了在支持英语的国家销售外,还有葡萄牙、法国、意大利、德国和西班牙 Microsoft 系统管理服务器(SMS)——SMS支持直接在Windows Installer中就可用。 Jconfig Sconfig——远程和中心管理和配置 完全的PC X家族——Hummingbird Exceed XDK——设计X Window 程序到基于Windows的平台 Hummingbird Exceed 3D——让工程和有限分析OpenGL-based程序分配到低成本的桌面上。降低了成本。 Multiple X Display/X Screens/Multiple Monitor支持——先进的X显示支持,用于同时访问多开发环境。 Xstart——强大、简单的远程程序创建。] Xsession——轻松创建多个远程程序。 Setup Wizard—— 更快、更轻松的Exceed安装。 Hummingbird HostExplorer 结合了完整的终端仿真支持——增加了对公司主机的访问,包括:IBM 大型机,AS/400和 UNIX 提供,经过TN3270E, TN5250E 和VT420。 NFS for Windows——性能有所提高,增加了远程文件系统的访问。 Hummingbird FTP for Windows Explorer——使用Windows Explorer 的先进、简化的文件传送。 Internet Daemons "Hummingbird Inetd "——为基于Windows的桌面提供了UNIX功能。 Hummingbird Basic——为自动重复的函数创建强大的脚本。 SOCKS——为TCP/IP程序提供的无缝、透明的安全性; Kerberos——仅保证经过检验的用户登录企业主机; 键盘映射和交换——自定义键盘来模拟工作站,允许用户在多个环境中同时运行; 其它新特点: Exceed XDK中提高的移值速度 Exceed 3D中支持GLX 1.3 Open GL 系统需求和支持的平台: 桌上电脑系统需求: Windows 95/98, Windows NT (Service Pack 4 or higher), Windows 2000 12 MB RAM 20 MB 磁盘剩余空间 启动 XDMCP (Query,Indirect,Broadcast), Passive REXEC,RLOGIN,RSH,Telnet,HRPS,PCX$Server Xstart,Client Wizard,Xsession,Telnet Dial-up Support —LBX,SLIP,PPP 网络传送支持: TCP/IP DECnet 用户界面: Server Visuals — Multiple Simultaneous Visuals, Automatic, GrayScale, PseudoColor, StaticColor, TrueColor, StaticGray X Display Support —Multiple X Displays and X Screens 窗口管理和模块: 多个、单一和同步的窗口模块 远程,本国,本地,本国为缺省,X为缺省,… 本地窗口管理——HWM, Motif1, Native 访问控制/安全 Xstart支持Kerberos V5 鉴定和密码术 主机、用户和密码保护 Xweb安全政策 字体支持 X11R5 RS/X11R6 字体服务器 字体/别名:75 DPI, 100 DPI, CDE, DEC, HP, IBM, Misc, OpenLook, PC Siemens, WinTED 中文/日文/韩文 输入法: XIM Kinput2 Microsoft-IME (中国,日本,韩国) 对Windows 2000的同步支持 打印: Xprint Graphical LPR/LPD via integrated HostExplorer Suite 用于综合的HostExplorer Suite的图形化LPR/LPD 用于HostExplorer Suite的LU1/LU3 管理服务: 经Jconfig Application Management Remote Configuration的集中管理 经Sconfig的集中配置

18,138

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧