这两天重装了5遍Win 7,外加 Ghost 两遍。
事情是这样的:不知从何时开始,我的 Windows 7 开始出现一些不正常的情况,主要表现在一些程序运行不正常或者是无法运行,错误信息是 conhost.exe 崩溃从而导致 cmd.exe 无法运行。而很多程序在后台都要调用一些命令的,cmd.exe 无法运行了,这些功能自然就无法用了。
我试了各种方法修复这个问题,包括请 GFans 里同样用 Win 7 的同学发个他的 conhost.exe 给我覆盖,但是都没有用。从来没有用过杀毒软件的我甚至都专门去下了MSE对系统进行了查杀,也没有发现有病毒。
实在没辙了,我决定重装。
我重装并不是件容易的事,我的电脑只有 CD 光驱,而 Win 7 的安装光盘是 DVD 的,我要去问我爸借 DVD 光驱和 IDE 转 USB 的线才能用 DVD 光驱。硬盘安装也是行不通的,因为硬盘安装只有在 XP 里才能用,在Win 7里会报错。
那就用U盘安装吧!反正我有两个4G的U盘,而Microsoft最近又刚推出了一个傻瓜式的Win 7安装U盘制作工具,我正想试试呢。可是……那个工具也是需要用到cmd.exe的,我又无法用,放弃。
无奈,我还是去借来了DVD光驱,插好USB线,在Windows里运行了setup.exe,按下Install now的时候,我突然想到是否应该重新用光盘启动然后试试覆盖安装?我点了取消,重启,又想到我这主板支持USB启动吗?以前在BIOS里貌似只有什么Maxtor-HDD启动,SONY CD-ROM启动,LAN启动之类的,没有见过与USB有关的启动选项啊。不管,先重启再说,进到BIOS里,居然多了个BenQ DVD-RW!欣喜啊。按x选择之,重启,F12,进入……桌子上的光驱发出了巨大的有如冲击钻一般的响声……终于又出现选择安装方式的界面了,我选了 Upgrade
,它NC地告诉我要在 Windows 里运行才能选Upgrade……
我再次回到Windows,运行之,Upgrade,它开始检查兼容性,检查了有一分钟吧,告诉我剩余空间不够……
我的C盘是15G,当时还剩下7.9G,它要求剩余空间8.6G……我开始删文件,删了一会儿再去试,还是不够,如是两次,我终于不耐烦了,决定全新安装,重启前我留了个心眼,把 C:\Users\wzyboy
文件夹(足有1G多)整个备份了一下,再用 Windows Easy Transfer 工具也备份了一下。
再次重启,用光盘引导,选 Custom
,格式化C盘,安装。除了光驱声音实在太响,一切都很顺利,20分钟后进入桌面。我珍惜了这次机会,第一时间把我的 Kingston Datatraveller 4G 清空,然后运行 Windows 7 USB/DVD Tool ,把U盘做成可引导的USB-HDD。
准备好U盘这条后路后,我把闹人的光驱还掉了,开始用 Easy Transfer 把以前的数据导回来。这是我第一次用 Easy Transfer,感觉还不错啊,很多设置都回来了。慢着……当我想开始安装软件的时候,怎么发现这些软件里的中文字都是乱码啊?我怀疑是 GDI++ 的问题,卸了,重启,还是如此。那是 Easy Transfe r的问题吗?我重装前是用硬盘安装的 Win 7(当时是双系统),重装后是用 Easy Transfer 恢复的,难道……?
正好手头有刚做的U盘,我狠了狠心,重启,用U盘引导,安安静静(完全静音,比光驱好多了)地重装了Win 7。装的时候还有小插曲:我原来是选C分区,然后点 Format
的,这次我点了 Delete
,然后重新新建一个分区,这次多了个 100M 的小分区,这就是人们传说中的Win 7自建保留分区了吧,我心想。但是我去不掉它,所以虽然心里不爽,但也没多放在心上。后来才知道这个东西很重要。
安静地重装完了,时间也不早了,我一进入桌面就点了 Shut down
,关机睡觉了。
第二天醒来出去和同学转了一圈,回来继续折腾,这次没用 Easy Transfer,但是也还是有乱码啊,百思不得其解……不管,先安装显卡驱动。装好驱动发现……奇怪啊,本来右击桌面是”图式选项”和”图形属性”的,现在怎么变成英文的了?而且刚才运行显卡驱动安装程序的时候也是英文的……
仔细查看,原来是我安装的时候把区域选错了,选了个默认的 United States,导致 Windows 默认处理非 Unicode 程序的时候都是用非中文编码来处理的,所以所有的非 Unicode 中文程序全是乱码。我把区域改回来之后,重启,果然一切都正常了~我错怪 Easy Transfer 了?于是我又用 Easy Transfer “还魂”了。
可是我还没高兴多久,新的问题又出现了:激活失败了!计算机属性里始终显示未激活,我重试并重启了几遍都不行,难道又是 Easy Transfer 在捣鬼吗?
似乎是有了U盘之后我特别喜欢重装,我又重新装了一遍,选了正确的区域,没乱码。不用 Easy Transfer,先破解……还是失败!
那是怎么回事?难道是刚才一遍装的时候没有连接网络所致吗?我打开了路由器和猫,再次重装,破解……又是失败!
我郁闷了。仔细回忆,这三次破解的时候命令行里的提示信息似乎比上次安装系统正常的时候少了很多啊……疑惑,Google之,找到了张正常破解的截图……一比较,果然少了好多行,这是怎么回事呢?看着截图里的东西,C:\
……嗯!我想到了,是那个100M的隐藏分区啊!隐藏分区是 Disk0 Partition0
,C盘是 Disk0 Parition1
,可是破解工具默认认为C盘是 Disk0 Partition0
……这回我是豁然开朗了。用光盘启动到 PE 下,把隐藏分区(分区0)连同C盘(分区1)全部删了,然后新建一个C盘(分区0)。
再次重装……破解,成功~!
我倍加珍惜这个系统了,用 Easy Transfer 导入设置,正常,没有乱码,已激活。很好,很强大。
对照以前的程序列表(Easy Transfer给的),我把程序重新装了一遍,还把之前备份的 C:\Users\wzyboy\AppData\Local\Chromium
文件夹复制回去,这回发现 Chromium 里的书签啊,包括离线数据什么的全都回来的,非常棒。全部装好后,觉得神清气爽了,把回收站什么清空,准备给系统做个 Ghost 备份,上次就是因为懒,没做备份,所以现在才那么麻烦。做备份之前,我突然觉得系统字体很怪异……嗯,重装前是把宋体(simsun.ttc
)替换成丽黑的……那……做Ghost之前也替换下吧。替换结束,用PE光盘启动系统,照常Ghost,正好出去解决了中午饭(方便面)。
回来之后重新进入系统,一切很和谐,突然想把PE装到U盘上,遂运行相关工具,那是一个命令行工具。
报错!和之前一模一样的错误!我惊呆了,按 Win+R
打开运行,输入 cmd
,回车……又是一模一样的错误……我欲哭无泪啊。
难道是软件冲突吗?我心想,打开 appwiz.cpl
,开始一个一个卸载软件,卸载一个重启一次,运行 cmd,都失败,后装的软件都卸载了,还是没有用……无奈,我想到自己刚才有了一个 Ghost 备份,心想再重装一次吧,如果不行再回来。于是我又开始了第五次重装。重装结束,我开始进行常规操作。破解正常,重启后cmd,运行正常。安装显卡驱动,重启后cmd,正常。Easy Transfer,重启后cmd,正常……
像这样,我装一个软件重启一遍,运行一遍cmd,一直正常。突然想到是不是禁用了什么服务的关系?我打开 services.msc,按照往日的习惯把一些不必要的服务都禁用了,重启,cmd,还是正常!那是怎么回事呢?
我苦思冥想……对了,还有一个字体!虽然我自己不太相信一个字体怎么会导致conhost.exe崩溃,但是我还是试了一下。替换前我运行了一遍cmd,正常。然后替换,重启,再次cmd……哈哈!出错了!这估计是我看到的最开心的一次出错提示了,到目前为止,我已经重装了5遍,运用了两次 PE 光盘外加一次 Ghost……现在我终于找到原因了,实在是高兴啊。
赶紧用备份的 simsun.ttc 替换回去,重启,cmd……一个可爱的黑色窗口出来了……虽然它如此朴素,我却觉得它如此美丽……
找到了原因,解决起来就方便了,我再次用 PE 启动,Ghost,把刚才的那个已经装好软件的镜像恢复回去,启动系统,把 simsun.ttc 替换回去,再次重启,问题果然解决了!这时,我真的是泪流满面了。
痛定思痛,经过一番研究,我发现了问题原来是这样的:
在 Windows 7 下运行 cmd.exe ,也就是命令行提示符,需要有一个 conhost.exe 进程来支持,这个进程主要是负责显示那个黑色的窗口的,cmd.exe只是用来解释命令的(相当于DOS时代的command.com)。conhost.exe不是管窗口的吗?窗口里的字体也是它管的,cmd.exe 里都用的是点阵字体,系统原装的那个 simsun.ttc 包含了宋体、新宋体以及它们各自的点阵字体。我替换用的那个simsun.ttc(实质是丽黑)却只有矢量字体,不包含点阵!就是因为这个原因,导致 conhost.exe 莫名崩溃,进而 cmd.exe 无法运行,最终导致一系列需要用到命令行的程序全部无法工作……
唉,这真是史上最诡异的错误了,仅仅是因为一个宋体替换,导致了这么多的麻烦。我为此总计重装了5次系统,动用了3次PE光盘,外加Ghost了两遍……唉……
Google 上搜索和我这样的问题,没有对应的解决之道,看来我这篇文章是第一篇有关 simsun.ttc 导致 conhost.exe 崩溃的文章了。大家一定要引以为戒啊。