Conhost.exe究竟是什么?它是微软从Vista和Windows 7(包括Windows 2008服务器版)开始引入的一个系统文件,在系统中被叫做“控制台窗口主机”。简单说,它的核心工作是为命令行程序(比如cmd.exe)提供类似Csrss.exe进程的图形子系统支持——而在更早的Windows XP系统里,这个活儿是Csrss.exe“兼职”干的。
问题就出在这里:让Csrss.exe兼职处理命令行窗口的图形界面,被认为存在安全隐患。于是微软为了提高安全性,在2006年之后的Vista、Win7等系统里,专门把这块功能独立出来,加了一个Conhost.exe进程。毫无疑问,这个进程是安全的——它由微软官方签名,可以在以下目录找到:
C:\Windows\System32(C代表系统盘符,根据安装位置不同可能变化)
借助微软的Process Explorer工具,可以更清楚地看到Conhost.exe和Csrss.exe之间的层级关系:

Windows 7中Conhost.exe隶属于Csrss.exe父进程之下。

如果觉得这些概念有点抽象,那不妨通过一个具体例子来理解Conhost.exe的实际作用。先看看Windows XP系统里命令行窗口长什么样:注意下图中红点标注的滚动条和系统主题(后面的记事本)样式——明显不统一,对吧?

再来看Vista这个“突破性的实验性系统”——它的命令行窗口已经开始有些变化了,但显然还不完善。如下图所示,整体窗口已经有了Win7主题的风格,可滚动条呢?居然还是XP命令行里那种方块样式,格格不入。

最后对比一下Win7下有了完整Conhost.exe支持后的命令行窗口:注意红点部分,窗口样式和Win7系统主题完全一致,毫无违和感。

为什么会有这种差异?因为XP系统里命令行窗口的图形部分是由Csrss.exe提供的,它没办法渲染系统主题,只能保持最原始的界面。而从Vista开始,微软为了提升安全性和美观度,加入了Conhost.exe——但Vista时代似乎因为dwm.exe的配合还不完善,虽然整体外形接近Win7,滚动条却依然“穿越”回了XP风格。直到Win7,Conhost.exe才真正成熟,让命令行窗口完美融入系统主题。
当然,Conhost.exe的功能远不止这些。比如,它支持直接把文件拖拽到命令行窗口里,快速输入文件路径——这个操作虽然不常用,但很实用。好了,写到这里,希望能帮大家理清Conhost.exe的来历和作用。如果还有疑问,或者遇到了其他相关问题,欢迎在评论区交流讨论。
