【转】Explorer.exe到底是什么?为什么从Windows 95开始一直传承至今?
转自知乎:韩朴宇
explorer.exe
是Windows95到Windows Me,Windows NT4到Windows10的默认shell(代替了Windows3.2的程序管理器),同时也是默认的文件管理器(代替了WinFile)。
explorer负责了任务栏,开始菜单,桌面的显示,同时也是文件管理器,功能复杂,实现起来更加复杂(尤其是Windows10,包含了很多UWP组件,稳定性差)。explorer提供了接口可以被第三方DLL注入,因此更会降低稳定性,一旦explorer主进程崩溃,桌面和任务栏就会消失(一般会自动重启)也因为explorer提供了用户打开其他程序的主要方式(开始菜单/固定到任务栏/桌面),Windows10的任务管理器定位到explorer.exe时结束进程会变成重启进程。
shell是操作系统提供给用户的交互程序,分为图形shell和命令行shell两种。shell直译就是壳,即内核外层的东西。
常见的命令行shell有Windows的cmd.exe,powershell,Unix下的Bash,Zsh,Fish。Windows Server,Windows PE默认使用cmd作为shell,开机后只有一个命令行的窗口。命令行shell没有多任务能力,一次只能显示一个文本程序,现在很少有人只使用命令行操作计算机。
桌面系统的图形shell则比较复杂,可以分为多个组件:桌面,任务栏/dock,开始菜单/Launcher,通知区域等。桌面经常由文件管理器负责,例如Windows的explorer,macOS的finder,通常显示/Users/<User>/Desktop下的文件,这些图标的操作方式一般和文件管理器内部没有差别。
Windows的任务栏由explorer负责,而macOS的dock程序坞是独立的程序/System/Library/CoreServices/Dock.app
Windows的开始菜单在Windows7及之前是explorer的一部分。Windows8中“开始”改成了类似移动端的开始屏幕,Windows10改成了独立的UWP,但是和explorer仍有密切的关系,比如开始菜单卡死了可以重启explorer解决。macOS的Luncher启动台是独立的程序/Applications/Launchpad.app。
Windows的通知区域是任务栏的一部分,而macOS则是独立在顶栏的右半部分。
Explorer包含了很多的功能,而且可以通过各种手段插入插件,因此稳定性不如macOS这种分离式设计。当然,我仍然觉得Windows的多任务管理比macOS直观。
移动操作系统的用户界面相比更加简化,只有启动器/主屏幕/开始屏幕(上香)和多任务界面。
历史内容
观察早期的Windows可以看到explorer是怎么成为shell的



Windows95虽然是16/32位混合系统,但是开始菜单/任务栏/桌面/资源管理器4功能于一体的explorer一直延续到Windows10.
Explorer.exe早在Windows 95(Chicago)开发早期就引入了



这是ReactOS的explorer的源代码,和Windows Server2003很接近
reactos/reactos

使用的模拟器:
windows2/3 The Original IBM PC in a Web Browser
Windows95 win95
Windows Chicago的更多信息
The Collection Book
Windows 95 - BetaWiki