ERD Commander 2005 Boot CD 剖析及汉化试验

ERD 2005 剖析及汉化实践

一、前言
  Winternals software 公司是于 1996 年由 Bryce Cogswell Ph.D. 和 Mark Russinovich Ph.D. 共同成立于美国德州,该公司主要产品为Windows 2000/NT 的系统修复和管理工具。这些修复与管理工具可应用于修复与救回损毁的 Windows-based 系统,让您不需从新装置系统。
  ERD Commander 2005 Boot CD(以下简称 ERD 2005),是一个可以启动机器的光盘镜像,用Nero刻盘后,就得到了一张超酷的启动光盘了。用此光盘启动后,可以进入一个类似windows桌面的界面,有开始菜单等,最重要的是内置了一些有用的工具。可以说,如果你的 Windows 系统出现问题,这个光盘可能就是你的最后一根救命稻草了。
  很多人对 ERD 2005 很感兴趣。特别是因为它的没有官方的中文版本,有很多朋友尝试着把它汉化。在这里,我们一起来剖析它,并做一个汉化试验。当然了,我们得不到(也不可能得到) Winternals software 公司的帮助或相关的任何文档,只能靠我们自己一点一点来摸索了。这倒是一件非常有趣的事情,但也肯定是非常困难。
  事先声明:众所周知,ERD 2005 的软件著作权人是 Winternals software 公司,在未经授权的情况下,我们只能是为了学习和研究该软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用该软件的,希望大家按此说明研究软件,勿用于商业用途!谢谢!
二、架构
  首先,我们在动手以前,要先了解我们的对手,不然的话,就像老鼠拉龟无从下手。
  ERD 2005 是基于 Winpe 的。假定我们都了解 Winpe 是什么了。如果不了解的话,请先查阅相关资料,无忧论坛里就可以找到很多关于 Winpe 的介绍了。
  需要研究的第一个问题:ERD 2005 的架构是怎样的?有哪些部分组成?
ERD 2005 是一个可以启动机器的光盘镜像,并带有一些可运行的工具程序,也就是说,我们可以把它视为一个完整的操作系统了。
  根据 MS 的官方定义:Microsoft Windows 预安装环境 (Windows PE) 版本是带有有限服务的最小 Win32 子系统,基于在受保护模式下运行的 Windows 内核。ERD 2005 是基于 Winpe 的,易通就简单地把它认为是运行在 Winpe 这个最小 Win32 子系统上,加了一个自己的图形化外壳(GUI Shell),并安装了一些自己的应用程序,是一个完整的操作系统了。
  易通是这么划分的:
  引导程序-〉Win32 子系统(Winpe,就是内核)-〉GUI Shell-〉应用程序
三、汉化原理
  如果我们要汉化它,从哪里下手呢?很明显了,整个系统划分为四个层次,我们就得要分别对这四个层次处理了。而且,必须从底层到高层,一步步来,道理是明显的。
  需要研究的第二个问题出来了:对这四个层次,应该怎样处理?
首先,引导程序是不需要处理的,因为它和语言版本根本没关系!:-)
  Win32 内核是处理的关键,要做的工作就是让这一层能够支持简体中文,不然的话,一切都白搭。
  GUI Shell 其实也就是一个程序,让它显示的是中文就好了。
  同样,让应用程序显示的是中文也就好了。
  好,我们的工作目标清晰了,分成两大块:内核和程序文件。
  汉化程序文件就简单了,有大把的工具,有大量的教材。
  至于汉化内核吗,嗯,有点麻烦,要想想办法……
  等等,有个问题,看看 ERD 2005 光盘,总共 64 个目录 1287 个文件,有哪些文件是要处理的?嗯,是 ERD 自己的文件估计就要处理了。如果是 Winpe 的,有两种可能,ERD 改过或没改过;没改过的,说明不影响,可以放过;改过的,肯定是有目的的才改的,所以有重大嫌疑,不能放过。从这个角度考虑,我们的工作换句话说,是要找出哪些是 ERD 自己的或处理过的,哪些是 Winpe 的?有点挠头了。这是我们需要研究的第三个问题,再转换一下,使它更明确:我们要找出 ERD 自己的以及处理过的文件。
四、工具
  找好趁手的兵器吧,先利其器。以下是易通喜欢的工具:
        1、UltraEdit;
        2、Passolo 5.0.006 汉化版;
        3、CX;
        4、VMware Workstation;
        5、Winternals Administrator's Pak 5.0;
        6、WinISO 等 ISO 处理、封装软件;
        7、Winpe v1.2 或 v2005。
  ISO 处理、封装软件无所谓用什么,能用就行。
  Winternals Administrator's Pak 5.0 就是生成 ERD2005 CD 的官方工具,不用多说了。
  VMware Workstation,虚拟机,能极大的提高测试的效率。喜欢用 VPC 的也可以,无所谓。
  Passolo 和 CX 就是汉化程序文件的工具,前者是针对标准资源,后者是针对非标资源。要配合着用,先处理标准资源,再处理非标的,才能完美。
  UltraEdit 可不光是字处理软件这么简单,有很多奇妙的用法呢。易通最喜欢的是它的文件比较功能,对文本文件、二进制文件都能比较,超强!
  如果不知道这些软件怎么用的,请先自行查一下资料研究一下,易通就不多讲了。推荐一个网站:汉化新世纪, [url]www.hanzify.org[/url],有详细汉化教程。
五、分析和提取
  回过头来,上面提到的要研究的第三个问题:找出 ERD 自己的以及处理过的文件。我们要解决这个问题。
  可以这么分析:ERD 2005 是基于 Winpe 的,我们把不是原版 Winpe 的文件找出来,肯定就是 ERD 自己的以及处理过的文件了。
  好,首先,ERD 2005 是基于哪个版本的 Winpe 的?我们又怎么能从 1287 个文件中识别原版 Winpe 的文件?对了,关键是怎么去找。
仔细观察 ERD2005 CD,在根目录有一个文件:WIN51IS ,有哪个版本的 Winpe 也有这个文件的?答案就是只有基于 Win 2003 Server Std 生成的 Winpe 。另外,是基于英文版 Win 2003 Server Std 生成的 Winpe (废话!)。
  好,我们找来基于英文版 Win 2003 Server Std 生成的 Winpe ,和 ERD2005 CD 比较一下,就知道了。
  1287 个文件,怎么比较呀?!呵呵,易通自有妙法。还记得 UltraEdit 吗?我们可以先把 Winpe 和 ERD2005 CD 放在不同的目录,然后分别生成目录文件的清单(dir /s *.* > dir.txt),用 UltraEdit 来比较两个不同的清单,差异的地方,就是我们要找的答案了。
  把原版 Winpe 的文件删掉,剩下的就是 ERD 自己的文件了。保存好,这就是下一步工作的基础了。
六、汉化内核
  前面说过,汉化的工作,必须从底层到高层,一步步来,首先是处理内核,要做的工作就是让这一层能够支持简体中文。
  有些麻烦,内核可不是能随便改着玩的。这是我们需要面对的第四个问题,有什么好办法?
易通在想,ERD 可以说是架在 Winpe 上的外壳,肯定地,不是简单的架上去而已。可以理解成是安装在 Winpe 上的一套程序,和 Winpe 是要配合好的。那么, ERD2005 CD 中,就可以分为 ERD 自己的文件(包含在我们上一步提取出来了的文件中)以及安装过 ERD 已经配合好的 Winpe (内核)。可以有两种思路:第一种是修改 ERD2005 CD 中的 Winpe 内核,使它能够支持简体中文;第二种就是,在简体中文的 Winpe 内核中,安装配置 ERD ,使它能够支持 ERD 外壳和程序。
  以前谈到汉化 ERD 的,都是走的第一种思路。能不能走得通呢?答案是显然的,很难走通,内核里面是千丝万缕的关系,牵一发而动全身,很容易出问题。要不就是对中文的支持度不够好,要不就系统出错蓝屏死机。
  相对而言,ERD 只是外挂而已,简单很多,把它植到简体中文的 Winpe 内核中百分百简单很多。并且,这样做可以说对简体中文的支持是最理想的,MS 已经帮我们做了很多工作了。:-)
  易通选择了第二条路。
  下面的事情,就是先做一个简体中文的 Winpe 内核,再把 ERD 植进去就是了。
  聪明的,马上就知道肯定是用简体中文的  Win 2003 Server Std 生成 Winpe 了。是的,这样最保险。易通也尝试过用简体中文的 Win 2003 Server Std sp1 生成 Winpe ,但不成功,道理是显然的,ERD 和内核结合得太紧密了,不是可以随随便便就迁移内核的。所以,我们选择相同版本的内核,只不过默认的语言属性不一样而已。
  如果选择第一种思路的,易通就只能祝你好运了。也不是一定不行,条条大路通罗马,或者别有一番风景也不一定。
  汉化内核的工作已经变化了,变成用简体中文的  Win 2003 Server Std 生成 Winpe ,再修改它,使它能够支持 ERD 外壳和程序。
七、修改 Winpe 配置
  第五个问题也出来了:ERD 在 Winpe 中有哪些配置,又怎么样配置?
Winpe 的配置文件在哪里?在我们上一步提取出来了的文件里!ERD 肯定也要修改原版的 Winpe 的配置文件,改过后的文件也肯定和原版的不同,肯定被我们在上一步提取出来。分析提取出来的文件就好了。
  研究过 Winpe 的都知道,Winpe 的配置文件主要有:\i386 下的 txtsetup.sif,\i386\system32 下的 setupreg.hiv,\i386\system32\config 下的 default 和 software。第一个是文本文件,后面的都是注册表文件。文本文件直接用 UltraEdit 处理就好了,注册表文件要用 Regedit 来处理。
  检查一下,我们上一步提取出来的文件里有没有这几个配置文件?呵呵,都有了。
  解答第五个的问题,就很简单了,把这四个文件与 E 文原版的 Winpe 的配置文件比较一下,就能找出来了。
  比较注册表文件,易通也有技巧。先用 Regedit 把它导成文本文件,再用 UltraEdit 来比较,呵呵……
--------------------------------------
注:处理注册表文件的方法
1.        Winpe 的注册表文件主要有:SETUPREG.HIV、SOFTWARE、DEFAULT、SECURITY、SAM,常用的是前三个,除了 SETUPREG.HIV 位于 Winpe 的 %Systemroot%\System32 中以外,其余的都在 %Systemroot%\System32\config 中。
2.        三个注册表文件分别对应 Windows 的注册表项:
        I386\system32\setupreg.hiv    对应  HKEY_LOCAL_MACHINE\SYSTEM
        I386\system32\config\default  对应  HKEY_USERS\.default
        I386\system32\config\software 对应  HKEY_LOCAL_MACHINE\SOFTWARE
3.        可以用 Windows 的 注册表编辑器 regedit.exe 编辑注册表文件。
4.        运行注册表编辑器,将光标定位在“HKEY_LOCAL_MACHINE”键或“HKEY_USERS”键上,在“文件”菜单上选“加载配置单元”,选择需要打开的注册表文件并取名,即可把该注册表文件加载为“HKEY_LOCAL_MACHINE”键或“HKEY_USERS”键中的项,比如加载“setupreg.hiv”项名取为“setupreg”。
5.        编辑加载的该注册表文件。
6.        将光标定位在加载的该注册表文件的项,在“文件”菜单上选“卸载配置单元”,卸载配置单元。
7.        如果在 Win2000/XP/2003 系统中使用注册表编辑器加载注册表文件后无法打开键,是由于权限的问题,简单的解决方法就是在 Winpe 中使用来注册表编辑器加载注册表文件即可,比如使用易通的“ERD Commander 2005 Boot CD 汉化加强版”中的 %Systemroot%\System32\winregedit.exe ,注意:不是开始菜单中的注册表编辑器,那个不能加载注册表文件,应该是使用开始菜单中的“运行”然后选择 %Systemroot%\System32\winregedit.exe 。
--------------------------------------
  找出差异后,我们照葫芦画瓢,把它做到简体中文 Winpe 的配置文件中,就好了。
  有兴趣的,就要留意了,好好分析这些差异,好好学习,你会发现自己对 Winpe 的认识长进了很多。这里,易通就不一一细讲了,免得班门弄斧。
八、汉化 Erd 程序文件
  没什么好讲的,用 Passolo 和 CX 汉化程序文件就是了。这一步工作,是最耗人、最辛苦的。可以使用 MS 的汉化字典,参考参考。
  要注意的是,非标资源太多。而且,Winternals software 公司的程序员比较有艺术气质,特潇洒,有些非标资源既做界面显示,又用于系统功能调用,比如:Autoruns,不能汉化,否则程序出错。好好测试。切记,好好测试!
九、合成封装
  好了,都汉化好了。最后一步的工作就是汉化的内核和 Erd 程序文件合在一起,重新封装,就大功告成了。
  但这一步,却不容易。封装 ISO 有 N 种方法,但你会发现,不管你怎么做,做出来的都会有问题,火狐浏览器 Firefox 启动不了。怎么办,翻译的最重要的原则就是忠于原著,浏览器启动不了,就是功能不全,行话就是汉化过度,这是失败!怎么办?这是我们最后一道难题。
问题出在 Firefox ,那我们就来研究一下 Firefox 。正常的 Firefox 应该是一个绿色程序,是不需要写入注册表的,随便就能执行。为什么会启动不起来呢?等等, Firefox 是不需要写入注册表,但是却要写入一些文件的,浏览网页有缓存,还有其他……问题是我们的 Firefox 是“安装”在光盘,它怎么能写?启动不了是正常的!但为什么原版的 ERD 的 Firefox 就能启动呢?肯定是 ERD 做了什么手脚。再仔细研究,在 \i386\system32 下面有两个目录:FireFox、FireFoxProfile。嗯,FireFox 就是主目录,FireFoxProfile 就是配置文件、临时目录了。在 Winxp 或者 Win2003 里面,配置文件、临时目录是在“*:\Documents and Settings\**用户”下的。启动原版的 ERD ,再启动 Firefox 看一看。嗯,在 C:\ 下有一个 ~ErdUserProfile.$$$ 目录,下面有 Application Data ,呵呵,这就是 FireFoxProfile 了。很明显,启动光盘上的 Firefox ,只能通过 Shell 中的菜单。 ERD 先在硬盘上建了一个临时目录 ~ErdUserProfile.$$$ ,再把 FireFoxProfile 拷过去,然后才启动 Firefox 的,就这么简单,也的确厉害。
  看样子,我们重新封装不行,说明 ERD 在封装时也作了手脚了。怎么办?
最简单也最有效的办法,就是,我们也用 ERD 来封装,具体的方法……
  用 Winternals Administrator's Pak 5.0 生成 ERD2005 CD ,在最后一步封装以前,我们把要封装的内容,换成我们的文件,就让 ERD 替我们干活吧。哈哈,大功告成。

十、总结及其他

  回头再看看,我们已经获得了些什么了?呵呵,易通只给出了一个方法:比较-〉分析-〉提取-〉替换-〉测试。但这一招,又有多少人明白?又有多少人能去实践?可以说,这一招可以把已有的东西都搞明白,但也很困难。
  再等等,我们还没有把 Firefox 汉化呢!呵呵,不需要汉化了,Firefox 已有了简体中文版,里头关键是一个语言包,还有相关的配置。我们再一次运用熟练的“比较-〉分析-〉提取-〉替换-〉测试”大法,不费吹灰之力,轻轻松松就把它搞定。易通就省略了数千行文字了。
  还有,有朋友会说了,易通是在取巧,避开了汉化 E 版 Winpe 的问题,未深入研究 Winpe 内核是怎样本地化(汉化)的。呵呵,这个问题其实很简单,我们比较、分析一下这两个版本的 Winpe ,答案就在手上了。分析得越详细越深入,答案集(呵呵,易通称它为集合)就越庞大。要全部都搞明白的话,凭我们一己之力,估计要到猴年马月了。再回过头来看看上面所提到的处理内核的两种思路,为什么易通会说汉化 E 版 Winpe 内核会很难行得通,是因为本地化 Winpe 内核的改动量是很大的,不光是注册表、配置文件,还有字体文件、输入法、时区等等,在没有尽可能详尽的说明文档(MS 有,你能拿到吗?)的情况下,我们很难保证不发生错误。看一下无忧论坛里,这样的求助帖子很多了。尽可能详尽的说明文档,也就是刚才提到的答案集了。如果也是运用易通的“比较-〉分析-〉提取-〉替换-〉测试”大法,参照简体中文版的内核来修改,是的,成功容易很多。但这样有意义吗?不如直接拿简体中文版的内核来做了。不过,易通还是建议,单从学习而言,有时间的话我们比较、分析一下这两个不同语言版本的 Winpe ,研究一下 Winpe 内核是怎样本地化(汉化)的,还有意义的。甚至,我们也可以研究正常的 Winpe 、Win2003 的内核。易通所做的,可是在简体中文版的 Winpe 内核的基础上,做了扩充、美化(到底美与不美,就看各人口味了)的。不过,适可为止。
=============================================================
完!
职场 试验 休闲 Microsoft

0

收藏

上一篇:图文并茂讲解VMware三种网络... 下一篇:在WORD和EXCEL中输入面积...
noavatar_middle.gif
redking

374篇文章,632W+人气,40粉丝

关注
noavatar_middle.gif

Ctrl+Enter 发布

发布

取消

你可能感兴趣的:(操作系统,运维,shell)