<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[大学生活·电脑技术]]></title>
	  <link>http://lingdushanke.blog.163.com</link>
	  <description><![CDATA[寻找生活中的点滴精彩，追求卓越的电脑技术。 QQ:350106052
E-mail:lingdushanke@163.com]]></description>
	  <language>zh-CN</language>
	  <pubDate>Wed, 20 Aug 2008 13:59:46 +0800</pubDate>
	  <lastBuildDate>Wed, 20 Aug 2008 13:59:46 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[lingdushanke]]></managingEditor>
	  <webMaster><![CDATA[鑫海]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[大学生活·电脑技术]]></title>
	  	<url>http://ava.blog.163.com/photo/mJCTtunF-jCchUk1MzAdHQ==/2019582957899487389.jpg</url>
	  	<link>http://lingdushanke.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[写给c语言初学者的心得体会]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200872015931970</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">写给c语言初学者的心得体会</P>
<P style="TEXT-INDENT: 2em">转自：暗组技术论坛<A href="http://www.darkst.com">http://www.darkst.com</A></P>
<P style="TEXT-INDENT: 2em">（技术的纯粹和无私的奉献才是我们最大的追求）</P>
<P style="TEXT-INDENT: 2em">本人小女孩一个,初步来到网络世界的时候,觉得发现什么都很好奇,什么都爱问一下,别人总叫你菜鸟,什么的...记得多年前我认识了某个男孩,他在15天之内把c语言入门了,当然,那时候我还不知道c语言是什么东西,直到看见一篇文章,&lt;你是否适合做一个程序员?&gt;我才想学c语言,既然选择了要学这一科..我觉得应该给新手们一点建议,当然,我现在也还没掌握到它,不过我这篇文章是鼓励新学c语言的新手们不要放弃c语言.今天早上,xxxx(我的好友)来找我,说c语言太难学了,我当时就想,其实我和他是一起时间学的吧,他学的时候我也是刚刚在学,所以我们基本学的时候是同一个时间,当然...男孩当然比女孩强多了,他现在掌握的比我多,我掌握的不够好,可能是因为领悟性比较差,也大概是他的拍拖(初恋)了,所以没有时间学c语言,打听一下,原来他是因为c语言是无法在段期掌握的,所以也不能令他赚到钱,他的想法是想现在学简单的c#先,其实c#也是比较难度的,因为它是.net里面的,不过我想他不该放弃掉c语言的,因为自从我学到c语言之后,总结一下吧..它可以培养一个人的耐性,因为学习c语言的人,必须要静心,这是对新手来说是一个也算是工程学的吧,必须要克服的一个难关,最好在心无杂念下去学习c语言是最好不过的了,为什么有些人不能在两三年内入门?为什么有些人可以在几个月内掌握入门?老实说...想要自己驾驭于它就必须要让它怕你,你要让它知道你是在啃它,你要知道你买本书是拿来啃的,一下子啃是没可能的,你是否羡慕别人那么高手?对..你也可以做到的,我不是在推广大家必须去学习c语言,但是这是我学c语言的心得,一旦学了就不要放弃,我也试过放弃,放弃几天,c语言就连最基本的代码都写不出来了,有很多人问:我想学c语言,需要什么具备条件么?"有的人会回答:英文,数学.也有人回答:没有基础也可以学.我个人认为始终要学点英文.毕竟我现在知道的一件事是目前国内没有一种语言比得上国外的,为什么外国人写的程序精度,密度比我们国内写的程序大而又小巧?为什么我们学每一门语言都有英文的?老兄..我来告诉你,你去学易语言,再去找份工作,你看看有没人知道是什么来的,我不是歧视易语言,因为我也会易语言,不过初学者100个人基本都会半途而废的有一大半的,不学c语言不重要,你想要开发程序,掌握一门就够了,不需要太多,现在用cmd脚本学命令也很牛..别看不起脚本语言,其实那些也可以写程序的,假如学到一半的菜鸟,就例如我的那位朋友,可以说他基本学会了一半吧,但是却说放弃,我个人认为这样的话那么他学什么语言都不会有耐性的,学什么都一样会半途而废的,还有,学习它不要想着他能为你赚多少钱.</P>
<P style="TEXT-INDENT: 2em">你适合当程序员吗 你知道编程序是怎么回事吗?(以下是我见过不错的一篇文章)</P>
<P style="TEXT-INDENT: 2em">1、 程序员意味着要编程序。（如果你仅仅想得到一份高薪水的工作，喝喝咖啡就等老板发薪水，我奉劝你还是另找一份更合适的工作，譬如练摊，真的，兄弟，这份工作不适合你）</P>
<P style="TEXT-INDENT: 2em">2、你是学文的还是学理的，编程序也许需要浪漫，但更需要逻辑和严谨。（说坦白点就是，在你没有找到乐趣以前，它很枯燥）</P>
<P style="TEXT-INDENT: 2em">3、你有对新技术追求的热情吗？你有刨根问底的探索精神吗？（热情绝对是最重要的！你仔细思考一下自己的性格适合当程序员吗？）</P>
<P style="TEXT-INDENT: 2em">4、当程序员决不是什么好差事，时刻需要学习，需要思考。（直到你成为那个可以引导别人去学习和思考的人，你才可以偷偷的嘿嘿笑，又一群傻蛋）</P>
<P style="TEXT-INDENT: 2em">5、程序员的未来很迷茫。（但我认为关键看你自己！我希望你是一个有追求的人，不仅仅是混碗饭吃。因为真正的乐趣在于创造；如果你能改变软件业的历史，那才是英雄；不想成为Bill Gates，不想成为Dennis Ritchie和 Bjarne Stroustrup，我会说你没有追求。有个关于程序员未来的笑话，也许你还没听过，你该听一听，摘抄如下：</P>
<P style="TEXT-INDENT: 2em">一个程序员对自己的未来很迷茫，于是去问上帝。</P>
<P style="TEXT-INDENT: 2em">“万能的上帝呀，请你告诉我，我的未来会怎样？”</P>
<P style="TEXT-INDENT: 2em">上帝说“我的孩子，你去问Lippman，他现在领导的程序员的队伍可能是地球上最大的”</P>
<P style="TEXT-INDENT: 2em">于是他去问Lippman。</P>
<P style="TEXT-INDENT: 2em">Lippman说“程序员的未来就是驾驭程序员”</P>
<P style="TEXT-INDENT: 2em">这个程序员对这个未来不满意，于是他又去问上帝。</P>
<P style="TEXT-INDENT: 2em">“万能的上帝呀，请你告诉我，我的未来会怎样？”</P>
<P style="TEXT-INDENT: 2em">上帝说“我的孩子，你去问Gates，他现在所拥有的财产可能是地球上最多的”</P>
<P style="TEXT-INDENT: 2em">于是他去问Gates。</P>
<P style="TEXT-INDENT: 2em">Gates说“程序员的未来就是榨取程序员”</P>
<P style="TEXT-INDENT: 2em">这个程序员对这个未来不满意，于是他又去问上帝。</P>
<P style="TEXT-INDENT: 2em">“万能的上帝呀，请你告诉我，我的未来会怎样？”</P>
<P style="TEXT-INDENT: 2em">上帝说“我的孩子，你去问侯捷，他写的计算机书的读者可能是地球上最多的”</P>
<P style="TEXT-INDENT: 2em">于是他去问侯捷。</P>
<P style="TEXT-INDENT: 2em">侯捷说“程序员的未来就是诱惑程序员”</P>
<P style="TEXT-INDENT: 2em">这个程序员对这个未来不满意，于是他又去问上帝。</P>
<P style="TEXT-INDENT: 2em">“万能的上帝呀，请你告诉我，我的未来会怎样？”</P>
<P style="TEXT-INDENT: 2em">上帝摇摇头“唉，我的孩子，你还是别当程序员了”）</P>
<P style="TEXT-INDENT: 2em">6、当程序员还是很有乐趣的。（当你学到新知识时，当你有新的思想见解时，当你有新的产品问世时，和知己探讨你的成果时…我问你，觉得这些是乐趣吗？）</P>
<P style="TEXT-INDENT: 2em">7、当程序员不易也不难。（世间事有难易乎？为之…；不为…。你有决心和信心吗？）</P>
<P style="TEXT-INDENT: 2em">8、你真的要当程序员？是你自己的想法？</P>
<P style="TEXT-INDENT: 2em">9、你舍得花钱买书吗？（读好书绝对是学习编程的最佳捷径。你一定会说，现在电脑书籍真他XX的贵，没法子，谁让知识和技术在人家的脑袋，在人家的书里呢；等你写书时可以把价格定低一点，记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书，买好书，不好的的书不如不读，其害大于其益，关于买什么书，你可以问高手或看候捷的书评；准备一个小本子记录你想买的书的名字，逛书店时看看，如果好就买下，记住要读，别光买不看。） </P>
<P style="TEXT-INDENT: 2em">10、我告诉你，程序就是：任何有目的的、预想好的动作序列，它是一种软件。</P>
<P style="TEXT-INDENT: 2em">11、编程序就是编写程序。</P>
<P style="TEXT-INDENT: 2em">12、你想好了吗？（如果你想好了还是决定要当程序员，可以继续往下读；否则，你可以继续寻找别的出路了。）</P>
<P style="TEXT-INDENT: 2em">（三） 一个程序员应该具备的基础知识和概念</P>
<P style="TEXT-INDENT: 2em">1、计算机是有什么组成的，CPU是什么东西，其工作原理是什么。（对于这些以及下面将要提到的概念我不会告诉你什么答案，你可以看相应的教材，关于教材我会在下一部分详述，记住理解最重要！）</P>
<P style="TEXT-INDENT: 2em">2、机器语言和微指令集的概念。</P>
<P style="TEXT-INDENT: 2em">3、程序的概念。</P>
<P style="TEXT-INDENT: 2em">4、汇编语言是低级语言但不是机器语言。</P>
<P style="TEXT-INDENT: 2em">5、高级语言主要有那些？（C，C＋＋，Basic，Pascal，Fortran，C#，Java等等；如果你是PRC软件业的英雄，你也写一门语言，最好不用英语） 6、编译程序和解释程序的概念和其原理。（编译器是高手和专家编写的）</P>
<P style="TEXT-INDENT: 2em">7、HTML、XML等是标识性语言。</P>
<P style="TEXT-INDENT: 2em">8、Prolog是人工智能语言。</P>
<P style="TEXT-INDENT: 2em">9、操作系统OS的概念和原理。（Windows98，Windows2000，Windows NT，UNIX，Linux，等等都是OS，还有一些实时OS，嵌入OS，编这些的绝对是高手）</P>
<P style="TEXT-INDENT: 2em">10、Windows编程说白了就是Windows API的调用。（PRC的程序员很多只是会编windows程序，用的是VB，我的建议是这些程序员顶多只是低级编码员，我称其是coder）</P>
<P style="TEXT-INDENT: 2em">11、VC＋＋、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境，不是编程语言。</P>
<P style="TEXT-INDENT: 2em">12、面向结构的设计概念。</P>
<P style="TEXT-INDENT: 2em">13、面向对象的概念。（好好理解，兄弟，这个东西还是很重要的）</P>
<P style="TEXT-INDENT: 2em">14、软件工程的概念和原理。（如果你想当老总就需要好好研究了，系统分析员比编码员要高一个等级，薪水也高哟）</P>
<P style="TEXT-INDENT: 2em">15、数据库的概念。（要熟悉一些著名的数据库系统和语言的名字，如Orcle，SQL，DB2，DyBase等）</P>
<P style="TEXT-INDENT: 2em">16、了解网络概念。</P>
<P style="TEXT-INDENT: 2em">17、了解多媒体概念。</P>
<P style="TEXT-INDENT: 2em">18、熟悉和掌握数据结构和基本算法。</P>
<P style="TEXT-INDENT: 2em">19、是不是要求太高了，别着急慢慢来，进步在不知不觉之中。（一旦开始学习，一个月以后你就会有一个基本的概念；两个月以后你就会感觉自己有了全面的基础知识；当你知道编程序是怎么回事时，说明你已经入门了。也有很多人编了很多年程序还没有入门呢，你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事？！）</P>
<P style="TEXT-INDENT: 2em">（四） 教材推荐</P>
<P style="TEXT-INDENT: 2em">――－推荐的教材主要还是针对概念来的，最好选用名校的教学用书。</P>
<P style="TEXT-INDENT: 2em">1、《计算机组成原理》（熟悉）</P>
<P style="TEXT-INDENT: 2em">2、《数据结构》（掌握）</P>
<P style="TEXT-INDENT: 2em">3、《操作系统》（了解-&gt;熟悉）</P>
<P style="TEXT-INDENT: 2em">4、《The C language》（掌握）</P>
<P style="TEXT-INDENT: 2em">5、《编译原理》（了解原理）</P>
<P style="TEXT-INDENT: 2em">6、《汇编语言》（了解）</P>
<P style="TEXT-INDENT: 2em">7、《计算机网络》（了解）</P>
<P style="TEXT-INDENT: 2em">8、《软件工程》（了解）</P>
<P style="TEXT-INDENT: 2em">9、《关系数据库》（熟悉）</P>
<P style="TEXT-INDENT: 2em">10、《The C＋＋Languege 》（掌握）</P>
<P style="TEXT-INDENT: 2em">11、《面向对象设计》（掌握；结合C++学习）</P>
<P style="TEXT-INDENT: 2em">（五）一些经验和体会</P>
<P style="TEXT-INDENT: 2em">1、真正的程序员用C++；（一位专家说的）</P>
<P style="TEXT-INDENT: 2em">2、动手去编程序；</P>
<P style="TEXT-INDENT: 2em">3、动脑去思考；</P>
<P style="TEXT-INDENT: 2em">4、要有良好的编程风格；</P>
<P style="TEXT-INDENT: 2em">5、读书，读好书，尽量读原版书！（我反复强调这一点，读书要有选择，坚持读好书，名家出的经典书，不要浪费实践在一些粗制滥造的书上面；坚持博览群书）</P>
<P style="TEXT-INDENT: 2em">6、有自己的学习计划；</P>
<P style="TEXT-INDENT: 2em">7、总结自己的经验教训；（准备一个笔记本，记录错误和心得）</P>
<P style="TEXT-INDENT: 2em">8、不要怕学新东西；</P>
<P style="TEXT-INDENT: 2em">9、要有软件工程的思想；</P>
<P style="TEXT-INDENT: 2em">10、善于发现问题，然后去寻找答案；</P>
<P style="TEXT-INDENT: 2em">11、向高手请教；（要虚心直到你成为高手）</P>
<P style="TEXT-INDENT: 2em">12、和同行交流；（不善于交流肯定不行）</P>
<P style="TEXT-INDENT: 2em">13、懂得软件的实质，不要被千变万化的表象所迷惑；</P>
<P style="TEXT-INDENT: 2em">14、真正要学习用的是编程语言和方法，不是什么库，什么类，什么工具；（学用那些什么库都比较简单，但光会这些库，我觉得还远远不够）</P>
<P style="TEXT-INDENT: 2em">15、学习wiodows编程主要是学习windows OS和win32 API；</P>
<P style="TEXT-INDENT: 2em">16、有空了解一下嵌入式开发；</P>
<P style="TEXT-INDENT: 2em">17、有空了解一下PDA软件开发；</P>
<P style="TEXT-INDENT: 2em">18、了解一下.NET框架和C#语言，也许它是你新的衣食父母；</P>
<P style="TEXT-INDENT: 2em">19、要有耐心，不要作浮躁的人； 20、对程序加注释，并保留你的老程序；</P>
<P style="TEXT-INDENT: 2em">21、学到的东西越多，了解的越多，你就越接近专家；</P>
<P style="TEXT-INDENT: 2em">22、有空去逛逛CSDN，那里有你很多知己；</P>
<P style="TEXT-INDENT: 2em">23、要有信心成为一个优秀的程序；</P>
<P style="TEXT-INDENT: 2em">（六）一些好书的推荐</P>
<P style="TEXT-INDENT: 2em">1、《The C Programming language》 （Keinighan &amp; Dennis Ritchie 1988）</P>
<P style="TEXT-INDENT: 2em">2、《The C++ Programming Languague》（Bjarne Stroustrup 1997）</P>
<P style="TEXT-INDENT: 2em">3、《Inside The C++ Object Model》 （lippmans）</P>
<P style="TEXT-INDENT: 2em">4、《Effective C++》 （同上）</P>
<P style="TEXT-INDENT: 2em">5、《More Effective C++》 （同上）</P>
<P style="TEXT-INDENT: 2em">6、《Exceptional c++》</P>
<P style="TEXT-INDENT: 2em">7、《C++面向对象高效编程》</P>
<P style="TEXT-INDENT: 2em">8、《设计模式》</P>
<P style="TEXT-INDENT: 2em">9、《Thinking In C++》</P>
<P style="TEXT-INDENT: 2em">10、《The Standard C++ Bible》（一般推荐）</P>
<P style="TEXT-INDENT: 2em">11、《The Art of Computer Programming 》</P>
<P style="TEXT-INDENT: 2em">12、《Programming Windows》 （Charles Petzold）</P>
<P style="TEXT-INDENT: 2em">13、《VC++5.0技术内幕》</P>
<P style="TEXT-INDENT: 2em">14、《MFC 深入浅出》</P>
<P style="TEXT-INDENT: 2em">15、《软件需求》</P>
<P style="TEXT-INDENT: 2em">16、《Advanced Windows》</P>
<P style="TEXT-INDENT: 2em">17、《C++ primer》</P>
<P style="TEXT-INDENT: 2em">18、《win32程序员参考手册》</P>
<P style="TEXT-INDENT: 2em">19、《用TCP/IP进行网际互连》</P>
<P style="TEXT-INDENT: 2em">20、《COM 本质论》</P>
<P style="TEXT-INDENT: 2em">（七）学习计划</P>
<P style="TEXT-INDENT: 2em">――－这个学习计划是我个人定的，也共享给大家参考一下，共同进步吧。 1、《计算机组成原理》</P>
<P style="TEXT-INDENT: 2em">2、《操作系统》</P>
<P style="TEXT-INDENT: 2em">3、《数据结构》</P>
<P style="TEXT-INDENT: 2em">4、《汇编语言》</P>
<P style="TEXT-INDENT: 2em">5、《 C 》</P>
<P style="TEXT-INDENT: 2em">6、《 C++ 》</P>
<P style="TEXT-INDENT: 2em">7、《VC 技术内幕》</P>
<P style="TEXT-INDENT: 2em">8、《Programming Windows》</P>
<P style="TEXT-INDENT: 2em">9、《深入浅出MFC》</P>
<P style="TEXT-INDENT: 2em">10、《Advanced Windows》</P>
<P style="TEXT-INDENT: 2em">11、《Inside The C++ Object Model》</P>
<P style="TEXT-INDENT: 2em">12、《Thinking in C++》</P>
<P style="TEXT-INDENT: 2em">13、《Effective C++》</P>
<P style="TEXT-INDENT: 2em">14、数据库</P>
<P style="TEXT-INDENT: 2em">15、网络</P>
<P style="TEXT-INDENT: 2em">16、嵌入式OS和编程</P>
<P style="TEXT-INDENT: 2em">17、硬件单片机</P>
<P style="TEXT-INDENT: 2em">18、.NET和C#</P>
<P style="TEXT-INDENT: 2em">19、软件工程</P>
<P style="TEXT-INDENT: 2em">20、UNIX和Linux</P>
<P style="TEXT-INDENT: 2em">程序员意味着要编程序.你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨.他们是靠头脑真真正正靠实力写程序赚钱的,所以我觉得程序员是一份永远都可以一边工作,一边学习的职业,c语言也不能说太难,只要静下心来肯去学,下定决心了,还有..假如你有不耐烦的坏习惯的话,最好看多点譬如这样的程序代码,你就知道c语言++ - - 什么得有多令你不耐烦恼了..(不好意思,这是我个人认为的)所以我今天晚上就会写这篇文章的,希望能给初学者们一个我学了c语言之后的心得体会,也别象我朋友那样要放弃,买了那本书,无论多厚.都要啃下去,我是一个曾经被别人说过我是不该学c语言的那块料的,当然..我不是因为这句话去生气,把怒火化为当是自己的鼓励,时时刻刻记住你为什么要学习它?你为什么不学习其它的?这样,你就会知道一个程序员的生活是多么的无聊了.那你看到这里,你还想什么呢?想学就去该学的,在这里我推荐你们买书的时候记得买老潭(潭浩强 ------ 清华大学教授牛淫)的书,买本学习本,花不了多少钱,我记得是30多块,不过我第一次买的时候买错了,买了一本入门后的高级程序员学习的,所以我在这里推荐一下,希望大家别象我这么傻..5555,还有,买多少书,一定要看完，别只买了就不看.还有一些天天黑站的人,他们以为这样是在提高自己的技术证明是没有差,觉得很神气,其实不是的,你学到这些入侵网站的,学习ddos,学习远程控制,盗QQ,刷四钻,对你将来有什么好处的呢?假如你认为你可以把这些传授给自己的儿子学的话,那你可以学吧,世界第一黑客——凯文.米特尼克被公认为世界第一黑客,你们想一下,年仅15岁的米特尼克闯入了“北美空中防务指挥系统”的主机内，和另外一些朋友翻遍了美国指向前苏联及其盟国的所有核弹头的数据资料，然后又悄无声息地溜了出来，Kevin的黑客生涯到其后来入狱时差不多就有15年之久。他的作案时间之长、作案次数之多、破坏力之大，他的技术之精、经历之传奇，都让全世界为之震惊，也使电脑警察们汗颜……有什么用么?你说一下他的头脑如果不入狱的话这15年里可以赚到多少钱?可以学到什么东西?还是你根本就想进去看看里面是什么样的?还是你也想学一下"越狱"?我觉得,有机会去了解一下什么是windows的核心技术,什么是linux的核心技术才好,不学的话你永远不知道它是什么来的,学了的话你起码会成熟很多,只要你知道你曾经是会玩嗅探,是会入侵,知道有这么一回事就可以了,不需要去证明什么技术.</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;总结.</P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp;&nbsp;选定一门你想学的语言就啃定它,别放弃,</P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp;&nbsp;永远也不要觉得自己懂一点就算是程序员了,</P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp;&nbsp;你写出的程序就可以知道你是不是程序员了...</P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp;&nbsp;当你学到知道每一个c语言里面的单词,知道了它们的作用之后,</P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp;&nbsp;你可以允许你告诉你,你成功了.</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200872015931970</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200872015931970</guid>
    <pubDate>Wed, 20 Aug 2008 13:59:31 +0800</pubDate>
    <dcterms:modified>2008-08-20T13:59:31+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ADSL快速更换IP地址]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200871310286742</link>
    <description><![CDATA[<div>打开记事本 输入<BR><BR><FONT color=#ff0000>Copy code<BR>@rasdial cnc /DISCONNECT<BR>@rasdial </FONT><FONT color=#0000ff>cnc user&nbsp;&nbsp; password<BR><BR></FONT>保存为bat文件即可<BR>这里的cnc更换为你自己的宽带连接名字 user为用户名 password为密码 <BR>中间都有空格<BR>不需要你自己断网再连接 <BR>不管你有没有连接网络 只要运行这个bat即可连接<BR>用在需要更换IP的场合实在是方便了<BR>添加到遨游的外部工具 直接在浏览器界面调用 更加方便</div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200871310286742</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200871310286742</guid>
    <pubDate>Wed, 13 Aug 2008 10:28:06 +0800</pubDate>
    <dcterms:modified>2008-08-13T10:28:06+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[【学习资料】位运算应用口诀]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200871062720783</link>
    <description><![CDATA[<div><P></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT size=4>清零取反要用与，某位置一可用或 </FONT></STRONG></P>
<P style="TEXT-INDENT: 2em" align=center><STRONG><FONT size=4>若要取反和交换，轻轻松松用异或</FONT></STRONG> </P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">移位运算 </P>
<P style="TEXT-INDENT: 2em">要点 1 它们都是双目运算符，两个运算分量都是整形，结果也是整形。 </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; 2 " &gt;"右移：右边的位被挤掉。对于左边移出的空位，如果是正数则空位补0，若为负数，可能补0或补1，这取决于所用的计算机系统。 </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; 4 "&gt;&gt;&gt;"运算符，右边的位被挤掉，对于左边移出的空位一概补上0。 </P>
<P style="TEXT-INDENT: 2em">位运算符的应用 (源操作数s 掩码mask) </P>
<P style="TEXT-INDENT: 2em">(1) 按位与-- &amp; </P>
<P style="TEXT-INDENT: 2em">1 清零特定位 (mask中特定位置0，其它位为1，s=s&amp;mask) </P>
<P style="TEXT-INDENT: 2em">2 取某数中指定位 (mask中特定位置1，其它位为0，s=s&amp;mask) </P>
<P style="TEXT-INDENT: 2em">(2) 按位或-- &brvbar; </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; 常用来将源操作数某些位置1，其它位不变。 (mask中特定位置1，其它位为0 s=s &brvbar;mask) </P>
<P style="TEXT-INDENT: 2em">(3) 位异或-- ^ </P>
<P style="TEXT-INDENT: 2em">1 使特定位的值取反 (mask中特定位置1，其它位为0 s=s^mask) </P>
<P style="TEXT-INDENT: 2em">2 不引入第三变量，交换两个变量的值 (设 a=a1,b=b1) </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; 目 标&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 操 作&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;操作后状态 </P>
<P style="TEXT-INDENT: 2em">a=a1^b1&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;a=a^b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;a=a1^b1,b=b1 </P>
<P style="TEXT-INDENT: 2em">b=a1^b1^b1&nbsp; &nbsp;&nbsp; &nbsp;b=a^b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;a=a1^b1,b=a1 </P>
<P style="TEXT-INDENT: 2em">a=b1^a1^a1&nbsp; &nbsp;&nbsp; &nbsp;a=a^b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;a=b1,b=a1 </P>
<P style="TEXT-INDENT: 2em">二进制补码运算公式： </P>
<P style="TEXT-INDENT: 2em">-x = ~x + 1 = ~(x-1) </P>
<P style="TEXT-INDENT: 2em">~x = -x-1 </P>
<P style="TEXT-INDENT: 2em">-(~x) = x+1 </P>
<P style="TEXT-INDENT: 2em">~(-x) = x-1 </P>
<P style="TEXT-INDENT: 2em">x+y = x - ~y - 1 = (x &brvbar;y)+(x&amp;y) </P>
<P style="TEXT-INDENT: 2em">x-y = x + ~y + 1 = (x &brvbar;~y)-(~x&amp;y) </P>
<P style="TEXT-INDENT: 2em">x^y = (x &brvbar;y)-(x&amp;y) </P>
<P style="TEXT-INDENT: 2em">x &brvbar;y = (x&amp;~y)+y </P>
<P style="TEXT-INDENT: 2em">x&amp;y = (~x &brvbar;y)-~x </P>
<P style="TEXT-INDENT: 2em">x==y:&nbsp; &nbsp; ~(x-y &brvbar;y-x) </P>
<P style="TEXT-INDENT: 2em">x!=y:&nbsp; &nbsp; x-y &brvbar;y-x </P>
<P style="TEXT-INDENT: 2em">x &gt;k&amp;1 </P>
<P style="TEXT-INDENT: 2em">(3) 将int型变量a的第k位清0，即a=a&amp;~(1 &gt;16-k&nbsp;&nbsp;(设sizeof(int)=16) </P>
<P style="TEXT-INDENT: 2em">(6) int型变量a循环右移k次，即a=a&gt;&gt;k &brvbar;a &gt;1); </P>
<P style="TEXT-INDENT: 2em">} </P>
<P style="TEXT-INDENT: 2em">(8)判断一个整数是不是2的幂,对于一个数 x &gt;= 0，判断他是不是2的幂 </P>
<P style="TEXT-INDENT: 2em">boolean power2(int x) </P>
<P style="TEXT-INDENT: 2em">{ </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; return ((x&amp;(x-1))==0)&amp;&amp;(x!=0)； </P>
<P style="TEXT-INDENT: 2em">} </P>
<P style="TEXT-INDENT: 2em">(9)不用temp交换两个整数 </P>
<P style="TEXT-INDENT: 2em">void swap(int x , int y) </P>
<P style="TEXT-INDENT: 2em">{ </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; x ^= y; </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; y ^= x; </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; x ^= y; </P>
<P style="TEXT-INDENT: 2em">} </P>
<P style="TEXT-INDENT: 2em">(10)计算绝对值 </P>
<P style="TEXT-INDENT: 2em">int abs( int x ) </P>
<P style="TEXT-INDENT: 2em">{ </P>
<P style="TEXT-INDENT: 2em">int y ; </P>
<P style="TEXT-INDENT: 2em">y = x &gt;&gt; 31 ; </P>
<P style="TEXT-INDENT: 2em">return (x^y)-y ;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//or: (x+y)^y </P>
<P style="TEXT-INDENT: 2em">} </P>
<P style="TEXT-INDENT: 2em">(11)取模运算转化成位运算 (在不产生溢出的情况下) </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;a % (2^n) 等价于 a &amp; (2^n - 1) </P>
<P style="TEXT-INDENT: 2em">(12)乘法运算转化成位运算 (在不产生溢出的情况下) </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;a * (2^n) 等价于 a &gt; n </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;例: 12/8 == 12&gt;&gt;3 </P>
<P style="TEXT-INDENT: 2em">(14) a % 2 等价于 a &amp; 1&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">(15) if (x == a) x= b; </P>
<P style="TEXT-INDENT: 2em">　　&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; else x= a; </P>
<P style="TEXT-INDENT: 2em">　　&nbsp; &nbsp;&nbsp; &nbsp;等价于 x= a ^ b ^ x; </P>
<P style="TEXT-INDENT: 2em">(16) x 的 相反数 表示为 (~x+1) </P>
<P style="TEXT-INDENT: 2em">实例 </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp; 功能&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 示例&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&brvbar;&nbsp; &nbsp; 位运算 </P>
<P style="TEXT-INDENT: 2em">----------------------+---------------------------+-------------------- </P>
<P style="TEXT-INDENT: 2em">去掉最后一位&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; (101101-&gt;10110)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; x &gt;&gt; 1 </P>
<P style="TEXT-INDENT: 2em">在最后加一个0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; (101101-&gt;1011010)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; x 1011011)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; x 101101)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; x &brvbar; 1 </P>
<P style="TEXT-INDENT: 2em">把最后一位变成0&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; (101101-&gt;101100)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; x &brvbar; 1-1 </P>
<P style="TEXT-INDENT: 2em">最后一位取反&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; (101101-&gt;101100)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; x ^ 1 </P>
<P style="TEXT-INDENT: 2em">把右数第k位变成1&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; (101001-&gt;101101,k=3)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x &brvbar; (1 101001,k=3)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x &amp; ~ (1 101101,k=3)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x ^ (1 101)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x &amp; 7 </P>
<P style="TEXT-INDENT: 2em">取末k位&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; (1101101-&gt;1101,k=5)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x &amp; ((1 </P>
<P style="TEXT-INDENT: 2em">取右数第k位&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; (1101101-&gt;1,k=4)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; x &gt;&gt; (k-1) &amp; 1 </P>
<P style="TEXT-INDENT: 2em">把末k位变成1&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &brvbar; (101001-&gt;101111,k=4)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x &brvbar; (1 100110,k=4)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x ^ (1 100100000)&nbsp; &nbsp; &brvbar; x &amp; (x+1) </P>
<P style="TEXT-INDENT: 2em">把右起第一个0变成1&nbsp; &nbsp; &brvbar; (100101111-&gt;100111111)&nbsp; &nbsp; &brvbar; x &brvbar; (x+1) </P>
<P style="TEXT-INDENT: 2em">把右边连续的0变成1&nbsp; &nbsp; &brvbar; (11011000-&gt;11011111)&nbsp; &nbsp;&nbsp; &nbsp;&brvbar; x &brvbar; (x-1) </P>
<P style="TEXT-INDENT: 2em">取右边连续的1&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; (100101111-&gt;1111)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; (x ^ (x+1)) &gt;&gt; 1 </P>
<P style="TEXT-INDENT: 2em">去掉右起第一个1的左边 &brvbar; (100101000-&gt;1000)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&brvbar; x &amp; (x ^ (x-1)) </P>
<P style="TEXT-INDENT: 2em">判断奇数&nbsp; &nbsp;&nbsp; &nbsp;(x&amp;1)==1 </P>
<P style="TEXT-INDENT: 2em">判断偶数 (x&amp;1)==0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</P>
<P style="TEXT-INDENT: 2em">例如求从x位（高）到y位（低）间共有多少个1 </P>
<P style="TEXT-INDENT: 2em">public static int FindChessNum(int x, int y, ushort k) </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;{ </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;int re = 0; </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;for (int i = y; i &gt; (i - 1)) &amp; 1); </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;} </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return re; </P>
<P style="TEXT-INDENT: 2em">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200871062720783</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200871062720783</guid>
    <pubDate>Sun, 10 Aug 2008 18:27:20 +0800</pubDate>
    <dcterms:modified>2008-08-11T08:08:31+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[用单网卡+集线器实现共享上网]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/4511082008712139361</link>
    <description><![CDATA[<div>ADSL猫的连接线直接插在HUB的UPlink口上就可以共享上网 <BR><BR><BR>使用HomeShare的优点&nbsp; <BR><BR>HomeShare是一款功能强大，易于使用的宽带共享软件。有了它，你可以完全抛弃宽带路由器。该软件使用单网卡共享方式，免去购买多余网卡的费用，而且不存在任何*能上的问题。所有想上网的计算机都通过HUB上网,ADSL猫的连接线直接插在HUB的UPlink口上,在自己的小网络里最先上网拨通账号的计算机就作为服务器.该软件应用时不需要设置专用的服务器，每台电脑都安装此软件，先开机的电脑将成为服务器。当服务器关机后，其它电脑将会自动成为服务器，保证网络可以继续使用。并且该软件还采用了无缝切换技术，当服务器关机客户机切换到服务器这一过程中，仍然可以保证客户机中正在进行的游戏及软件不会中断。同时软件还使用了虚拟网络号做为安全措施，防止未授权的计算机通过本机代理上网。HomeShare的应用范围很广泛，支持以太网，ADSL，有线宽带，WLAN等网络环境。&nbsp; <BR><BR>实例：三台计算机通过HomeShare实现单网卡共享ADSL上网&nbsp; <BR><BR>任务描述：计算机A，B，C和一个HUB（集线器），一个ADSL猫。将电话线连到adsl猫上，然后将adsl猫连接到hub的一个端口（最好连接到HUB的UPLINK口，如果没有UPLINK口连接到普通端口也可以），三台电脑分别与hub连接。通过HomeShare实现在没有宽带路由器及第四块网卡的情况下三台机器的共享上网。三台计算机从左往右依次为ABC，操作系统都是WIN2000或WINXP。&nbsp; <BR><BR><BR><BR>实现方法：&nbsp; <BR><BR>STEP1：在三台计算机上均安装HomeShare软件。&nbsp; <BR><BR>STEP2：在A计算机的HOMESHARE配置界面将其IP地址设置为192.168.22.2,掩码为255.255.255.0,网关地址为192.168.22.1。在连接类型处选择pppoe，然后在下方出现的帐号设置处输入你的ADSL帐号的用户名和密码，让HOMESHARE完成自动拨号。&nbsp; <BR><BR><BR><BR>STEP3：在B计算机上按照和A一样的配置进行设置，值得注意的是在IP地址设置处输入192.168.22.3，网关及掩码地址和A一样，另外在网络号处也要输入与A一致的数字。&nbsp; <BR>STEP4：在C计算机上同样按照STEP3的方法进行设置，唯一区别是IP地址设置为192.168.22.4，而网关，掩码地址及网络号均要保持一致。&nbsp; <BR><BR>当全部设置完毕就实现了三台计算机通过HomeShare进行单网卡共享ADSL上网了。先开机并连上网的计算机将做为临时服务器供其他两台计算机上网使用，如果在上网过程中临时服务器关机或重启的话，另外两台计算机中的一台将立刻从客户机升级为临时服务器提供代理服务。&nbsp; <BR><BR>小提示：在实际使用中笔者发现由于连接在HUB上的所有设备都处在一个广播域，而该软件在寻找服务器或ADSL猫时使用的就是广播数据包，所以对于HOMESHARE软件中网关地址的设置并不那么苛刻，我们只要设置一个没有使用过的IP地址即可。笔者将IP设置为192.168.100.1，网关地址为10.1.1.1后同样可以工作。软件下方显示的状态为“已连接”。&nbsp; </div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/4511082008712139361</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/4511082008712139361</guid>
    <pubDate>Fri, 1 Aug 2008 14:01:39 +0800</pubDate>
    <dcterms:modified>2008-08-01T14:01:39+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[数据恢复技术大全]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200862993346388</link>
    <description><![CDATA[<div><P>一、数据恢复基础知识<BR>&nbsp; 说到数据恢复，我们就不能不提到硬盘的数据结构、文件的存储原理，甚至操作系统的启动流程，这些是你在恢硬盘数据时不得不利用的基本知识。即使你不需要恢复数据，理解了这些知识（即使只是稍微多知道一些），对于你平时的电脑操作和应用也是很有帮助的。<BR>我们就从硬盘的数据结构谈起吧……</P>
<P>1、硬盘数据结构<BR>&nbsp; 刚出厂一块硬盘，我们是没有办法使用的，你需要将它分区、格式化，然后再安装上操作系统才可以使用。就拿我们一直沿用到现在的Win9x/Me系列来说，我们一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT、DIR和Data等五部分（其中只有主引导扇区是唯一的，其它的随你的分区数的增加而增加）。</P>
<P>主引导扇区:主引导扇区位于整个硬盘的0磁道0柱面1扇区，包括硬盘主引导记录MBR（Main Boot Record）和分区表DPT（Disk Partition Table）。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区，并在程序结束时把该分区的启动程序（也就是操作系统引导扇区）调入内存加以执行。至于分区表，很多人都知道，以80H或00H为开始标志，以55AAH为结束标志，共64字节，位于本扇区的最末端。值得一提的是，MBR是由分区程序（例如DOS的Fdisk.exe）产生的，不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个，只要它能完成前述的任务即可，这也是为什么能实现多系统启动的原因（说句题外话:正因为这个主引导记录容易编写，所以才出现了很多的引导区病毒）。<BR>操作系统引导扇区： OBR（OS Boot Record）即操作系统引导扇区，通常位于硬盘的0磁道1柱面1扇区（这是对于DOS来说的，对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区），是操作系统可直接访问的第一个扇区，它也包括一个引导程序和一个被称为BPB（BIOS Parameter Block）的本分区参数记录表。其实每个逻辑分区都有一个OBR，其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件（例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS）。如是，就把第一个文件读入内存，并把控制权交予该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元（Allocation Unit，以前也称之为簇）的大小等重要参数。OBR由高级格式化程序产生（例如DOS 的Format.com）。</P>
<P>文件分配表： <BR>FAT(File Allocation Table)即文件分配表，是DOS/Win9x系统的文件寻址系统，为了数据安全起见，FAT一般做两个，第二FAT为第一FAT的备份, FAT区紧接在OBR之后，其大小由本分区的大小及文件分配单元的大小决定。<BR>FAT的格式历来有很多选择，Microsoft 的DOS及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式，但除此以外并非没有其它格式的FAT，像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。</P>
<P>目录区：<BR>DIR是Directory即根目录区的简写，DIR紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置，FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件（目录）的起始单元（这是最重要的）、文件的属性等。定位文件位置时，操作系统根据DIR中的起始单元，结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后，才是真正意义上的数据存储区，即DATA区。</P>
<P>数据区：<BR>DATA虽然占据了硬盘的绝大部分空间，但没有了前面的各部分，它对于我们来说，也只能是一些枯燥的二进制代码，没有任何意义。在这里有一点要说明的是，我们通常所说的格式化程序（指高级格式化，例如DOS下的Format程序），并没有把DATA区的数据清除，只是重写了FAT表而已，至于分区硬盘，也只是修改了MBR和OBR，绝大部分的DATA区的数据并没有被改变，这也是许多硬盘数据能够得以修复的原因。但即便如此，如MBR/OBR/FAT/DIR之一被破坏的话，也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是，如果你经常整理磁盘，那么你的数据区的数据可能是连续的，这样即使MBR/FAT/DIR全部坏了，我们也可以使用磁盘编辑软件（比如DOS下的DiskEdit），只要找到一个文件的起始保存位置，那么这个文件就有可能被恢复（当然了，这需要一个前提，那就是你没有覆盖这个文件……）。</P>
<P>2、硬盘分区方式<BR>&nbsp; 我们平时说到的分区概念，不外乎三种:主分区、扩展分区和逻辑分区。<BR>&nbsp; 主分区是一个比较单纯的分区，通常位于硬盘的最前面一块区域中，构成逻辑C磁盘。在主分区中，不允许再建立其它逻辑磁盘。<BR>&nbsp; 扩展分区的概念则比较复杂，也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间，而每个分区的参数占据16个字节，故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据，如果说逻辑磁盘就是分区，则系统最多只允许4个逻辑磁盘。对于具体的应用，4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用，系统引入了扩展分区的概念。<BR>&nbsp; 所谓扩展分区，严格地讲它不是一个实际意义的分区，它仅仅是一个指向下一个分区的指针，这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外，仅需要存储一个被称为扩展分区的分区数据，通过这个扩展分区的数据可以找到下一个分区（实际上也就是下一个逻辑磁盘）的起始位置，以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘，在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。<BR>&nbsp; 需要特别注意的是，由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的，因此，若单向链表发生问题，将导致逻辑磁盘的丢失。</P>
<P>3、数据存储原理<BR>既然要进行数据的恢复，当然数据的存储原理我们不能不提，在这之中，我们还要介绍一下数据的删除和硬盘的格式化相关问题……文件的读取操作系统从目录区中读取文件信息（包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号），我们这里假设第一个簇号是0023。操作系统从0023簇读取相应的数据，然后再找到FAT的0023单元，如果内容是文件结束标志（FF），则表示文件结束，否则内容保存数据的下一个簇的簇号，这样重复下去直到遇到文件结束标志。<BR>文件的写入<BR>&nbsp; 当我们要保存文件时，操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等相应信息，然后在Data区找到闲置空间将文件保存，并将Data区的第一个簇写入DIR区，其余的动作和上边的读取动作差不多。<BR>文件的删除<BR>&nbsp; 看了前面的文件的读取和写入，你可能没有往下边继续看的信心了，不过放心，Win9x的文件删除工作却是很简单的，简单到只在目录区做了一点小改动——将目录区的文件的第一个字符改成了E5就表示将改文件删除了。<BR>Fdisk和Format的一点小说明<BR>&nbsp; 和文件的删除类似，利用Fdisk删除再建立分区和利用Format格式化逻辑磁盘（假设你格式化的时候并没有使用/U这个无条件格式化参数）都没有将数据从DATA区直接删除，前者只是改变了分区表，后者只是修改了FAT表，因此被误删除的分区和误格式化的硬盘完全有可能恢复……</P>
<P>系统启动流程<BR>&nbsp; 各种不同的操作系统启动流程不尽相同，我们这里以Win9x/DOS的启动流程为例。<BR>第一阶段:系统加电自检POST过程。POST是(Power On Self Test)的缩写，也就是加电自检的意思，微机执行内存FFFF0H处的程序（这里是一段固化的ROM程序），对系统的硬件（包括内存）进行检查。<BR>第二阶段:读取分区记录和引导记录。当微机检查到硬件正常并与CMOS设置相符后，按照CMOS设置从相应设备启动（我们这里假设从硬盘启动），读取硬盘的分区记录（DPT）和主引导记录（MBR）。<BR>第三阶段:读取DOS引导记录。微机正确读取分区记录和主引导记录后，如果主引导记录和分区表校验正确，则执行主引导记录并进一步读取DOS引导记录（位于每一个主分区的第一个扇区），然后执行该DOS引导记录。<BR>第四阶段:装载系统隐含文件。将DOS系统的隐含文件IO.SYS入内存，加载基本的文件系统FAT，这时候一般会出现Starting Windows 9x...的标志，IO.SYS将MS.SYS读入内存，并处理System.dat和User.dat文件，加载磁盘压缩程序。<BR>第五阶段:实DOS模式配置。系统隐含文件装载完成，微机将执行系统隐含文件，并执行系统配置文件（Config.sys），加载Config.sys中定义的各种驱动程序。<BR>第六阶段:调入命令解释程序(Command.com)。系统装载命令管理程序，以便对系统的各种操作命令进行协调管理（我们所使用的Dir、Copy等内部命令就是由Command.com提供的）。<BR>第七阶段:执行批处理文件(Autoexec.bat)。微机将一步一步地执行批处理文件中的各条命令。<BR>第八阶段:加载Win.com。Win.com负责将Windows下的各种驱动程序和启动执行文件加以执行，至此启动完毕。<BR>数据恢复的基础知识到此就给你介绍得差不多了。如果你领会了以上的这些知识，相信加上工具软件的辅助，恢复你丢失的数据简直是轻而易举，这里就不再多说，我们走入真正的实战操作吧……</P>
<P>二、<BR>硬盘数据恢复方案分析<BR>&nbsp; 难道在硬盘数据由于各种原因被破坏后，我们就只能……？<BR>当然，我们最大的期望还是——你永远不要用到下面的方法！因为再完备的事后解决方案，也不能保证所有数据的完好无缺。而要真正做到万无一失，更重要的工作还在于防患于未然。<BR>1、文件语删除<BR>A、症状<BR>&nbsp; 这可能是最简单同时也是最常见的数据损坏，直接的表述就是一般删除文件后清空了回收站，或按住Shift键删除，要不然就是在“回收站”的“属性”中勾选了“删除时不将文件移入回收站，而是彻底删除”。<BR>B、解决方案<BR>&nbsp; 既然是最常见的数据损坏，当然也就是最容易恢复的，下面就根据不同的操作系统给出相应的解决方案。<BR>1）.Win9x/Me下的解决方案<BR>也就是FAT16/32分区下的文件误删除恢复，这应该是大部分恢复类软件的基本功能；而我们拿来作例子的软件Recover4all，所提供的功能仅为在Win9x/Me下恢复被误删除的文件——其实很多东西并不是一味求大求全就好，够用已足够，简单就是美。<BR>2）.WinNT/2000下的解决方案<BR>&nbsp; 换种说法，也就是如何恢复在NTFS分区下被误删除的文件。对于这种相对简单的需求，File Scavenger完全就可以胜任。当然，File Scavenger是很具有针对性的——它只能在WinNT/2000系统下使用（同时必须以Administrator用户登录系统），而且只对NTFS格式的分区有效。不过它支持压缩过的NTFS分区或文件夹中文件的恢复，并对格式化过的NTFS分区中的文件也有效（注意:File Scavenger只可以对格式化过的分区中的文件进行恢复，并不能恢复整个被格式化过的分区）。<BR>C、不可恢复的情况<BR>&nbsp; 如果文件在删除之后，其存储的磁盘空间进行过写操作，那在通常情况下恢复的几率为0。因此，误删除文件可以恢复的重要前提就是不要在删除文件所在的分区进行写操作。<BR>病毒破坏、症状现在使用电脑的人基本都是谈“毒”色变，病毒带来的数据破坏往往不可预见（包括分区表破坏、数据覆盖等；例如CIH病毒破坏的硬盘，其分区表已被彻底改写，用A盘启动也无法找到硬盘），由此病毒破坏硬盘数据的症状也不好描述，基本上大部分的数据损坏情况都有可能是病毒引起的，所以最稳妥的方法还是安装一个优秀的病毒防火墙。<BR>2)、解决方案<BR>&nbsp; 由于病毒破坏硬盘数据的方法各异，恢复的方案就需要对症下药。一般以常见的CIH为例，因为它最普遍，也最容易判断（一般是在4月26日发作）。当用户的硬盘数据一旦被CIH病毒破坏后，使用KV3000的F10功能，可修复的程度如下:<BR>1.C盘容量为2.1G以上，原FAT表是32位的，C分区的修复率为98%，D、E、F等分区的修复率为99%, 配合手工C、D、E、F等分区的修复率为100%。<BR>2.硬盘容量为2.1G以下，原FAT表是16位的，C分区的修复率为0%，D、E、F等分区的修复率为99%,配合手工D、E、F盘的修复率为100%。因为原C盘是16位的短FAT表，所以C盘的FAT表和根目录下的文件目录都被CIH病毒乱码覆盖了。 KV3000可以把C盘找回来，虽然根目录的文件名字已被病毒乱码覆盖看不到了，但文件的内容影像还存储在C盘内的某些扇区上。推荐用KV3000找回C盘，再用文件修复软件TIRAMISU.EXE可将C盘内的部分文件影像找回来，如果原存放文件影像的簇是相连的，找回的文件就完整无损。但对于FAT16的C盘是不是中了CIH就没救呢？你还是可以尝试一下FIXMBR，它可以通过全盘搜索，决定硬盘分区，并重新构造主引导扇区。由于软件只修改主引导扇区记录，对其它扇区不进行写操作，故一般不会带来不安全目录（如果修复得不理想，请DiskEdit等工具进行手工修复）。注意:FIXMBR是一个比较老的程序，对WinNT、Linux以及FAT32考虑得不多。<BR>3)、不可恢复的情况<BR>&nbsp; 由于病毒破坏硬盘的方式实在太多，而且大部分破坏都无法用一般软件轻易恢复（如果你喜欢使用DiskEdit等磁盘扇区编辑工具，对某些情况还有一线希望），所以……遇到病毒破坏硬盘的情况你就祈祷吧（由此看来，安装一个优秀的病毒防火墙绝对是有必要的）<BR>2、 分区表破坏<BR>分区表破坏是比较常遇到：<BR>A、破坏原因及恢复可行性分析<BR>分区表破坏，可能是数据损坏中除了物理损坏之外最严重的一种灾难性破坏。究其原因，不外乎以下几种:<BR>1).个人误操作删除分区，只要没有进行其它的操作完全可以恢复。<BR>2).安装多系统引导软件或者采用第三方分区工具，有恢复的可能性。<BR>3).病毒破坏，可以部分或者全部恢复。<BR>4).利用Ghost克隆分区硬盘破坏，只可以部分恢复或者不能恢复（用Ghost的朋友要小心了）。<BR>B、解决方案<BR>在Norton Utility系列工具中，功能十分强大，可以恢复分区记录、FAT表，需要注意的是它对硬盘的操作不是只读的，因此你需要每一步都做好Undo文件，这样即使误操作也可以恢复，Norton Disk Doctor配合DiskEdit在分区表不能恢复时也可以恢复部分文件，可惜Norton Disk Doctor不支持NTFS分区，这不能不说是它的一大遗憾之处……最专业的数据恢复公司出的软件，当然很有专业风范，EasyRecovery支持的文件系统格式很多FAT、NTFS都支持，并且有专门的For Novell版本。EasyRecovery对于分区破坏和硬盘意外被格式化都可安全的恢复，你所要做的就是将数据损坏硬盘挂到另外一台电脑上，尽情恢复就是了，不过EasyRecovery对于中文的文件名和目录名效果不是很好（一些乱码，但文章内容绝对是正确的）。由出品PartitionMagic的PowerQuest公司所出的，硬盘资料复原工具。它是一套恢复硬盘因病毒感染，意外格式化等因素所导致的资料损失工具软件，能将已删除的文件资料找出并恢复，也能找出已重新格式化的硬盘、被破坏的FAT分配表、启动扇区等等，几乎能找出及发现任何在硬盘上的资料（支持FAT16和FAT32及长文件名）。恢复回来的资料能选择在原来所在位置恢复或保存到其它可写入资料的硬盘，也提供了自动备份目录、文件和系统配置文件的功能，能在任何时间恢复）</P>
<P>2、全盘崩溃和分区丢失<BR>首先重建MBR代码区，再根据情况修正分区表。修正分区表的基本思路是查找以55AA为结束的扇区，再根据扇区结构和后面是否有FAT等情况判定是否为分区表，最后计算填回主分区表，由于需要计算，过程比较烦琐。如果文件仍然无法读取，要考虑用Tiramint等工具进行修复。如果在FAT表彻底崩溃，恢复某个指定文件，可以用DiskEdit或Debug查找已知信息。比如文件为文本，文件中包含“软件狗”，那么我们就要把它们转换为内码C ED BC FE B9 B7进行查找。</P>
<P>3、文件丢失、误格式化的情况<BR>一般来说，删除文件仅仅是把文件的首字节，改为E5H，而并不破坏文件本身，因此可以恢复。但对不连续文件要恢复文件链，而由于手工交叉恢复对一般计算机用户来说并不容易，这里就就不讲了，建议用工具处理，如果已经安装了Norton Utilities，可以用它来查找。另外，RecoverNT等工具都是恢复的利器。但是应特别注意，千万不要在发现文件丢失后，在本机安装什么恢复工具，你可能恰恰把文件覆盖掉了。特别是如果你的文件在C盘，发现主要文件被你失手清掉了（比如你按SHIFT删除），你应该马上直接关闭电源，用软盘启动进行恢复或把硬盘串接到其它有恢复工具的机器处理。</P>
<P>4、文件损坏<BR>　一般的说，恢复损坏文件须要清楚地了解文件的结构，但这并不是很容易的事情，而这方面的工具也不多。不过，文件如果字节正常，不能正常打开往往是文件头损坏。</P>
<P>5、硬盘被加密或变换<BR>此时千万不要进行FDISK/MBR，SYS等处理，否则数据再也无法找回，一定要反解加密算法，或找到被移走的重要扇区。对于那些加密硬盘数据的病毒，清除时一定要选择能恢复加密数据的可靠杀毒软件。</P>
<P>6、文件加密后密码遗忘<BR>对于很多字处理软件的文件加密和ZIP等压缩包的加密，你是不能靠加密逆过程来完成的，因为那从理论上是异常困难的。目前有一些相关的软件，他们的思想一般都是用一个大字典集中的数据循环用相同算法加密后与密码的密文匹配，直到一致时则说明找到了密码。你可以去寻找这些软件，当然，有些软件是有后门的，比如DOS 下的WPS，Ctrl+qiubojun就是通用密码。Undiskp的作者冯志宏是解文件密码的个中高手，大家不妨去他的主页看看。</P>
<P>7、系统用户密码遗忘的处理<BR>最简单的方法就是用软盘启动（NT的你也可以把盘挂接在其他NT上），找到支持该文件系统结构的软件（比如针对NT的NTFSDOS），利用他把密码文件清掉、或者是COPY出密码档案，用破解软件套字典来处理。前者时间短但所有用户信息丢失，后者时间长，但保全了所有用户信息。对UNIX系统，建议你一定先做一张应急盘。</P>
<P>二、数据备份介绍<BR>虽然数据恢复技术可能将你的损失降到最低，但是，谁愿意在惶恐不安中，边祈祷边按下各类数据恢复软件的“Recover”按钮？也没有人喜欢面对满屏的16进制代码，带着侥幸的心理调整硬盘分区表Data区的信息；所以，最好的数据保全方法应该是防患于未然——备份！<BR>虽然，备份可以说是一种悲观的做法，可一旦不可预见的问题发生，备份下来的资料也许是你唯一的救命稻草。</P>
<P>1、么东西最该备份<BR>决定如何备份前，应先考虑备份什么。硬盘里有三种东西:数据、应用程序和操作系统。你可备份硬盘中的所有东西，也可只备份数据。进行完整的备份是最简单的方法，至少从恢复的角度看是这样。如果整个硬盘完全损坏，你不需要从头重装操作系统和应用程序；而是很快就可恢复运行。但是反过来，进行完整备份花的时间更长，要用到更多带有大容量存储空间的移动设备——即所谓外挂驱动器，如CD-R或Zip驱动器。另一个方法是只备份最重要的东西:数据。你不能很轻易地替换文档、工作表或数据库。备份所有数据的最简单的方法是把所有数据保存到一个地方。你还应备份其它的重要文件，比如那些含有你所有设置的文件，包括浏览器的书签（收藏夹）、cookie（含有密码）、地址簿、配置设置、数据项与报告表、模板、宏等。Windows 2000把这些文件都放到一个名叫“Documents And Settings”的新文件夹中，所以找起来很方便。该文件夹中不仅包括My Documents文件夹，还包括了部分关于配置设置、收藏夹和cookie的注册表信息。在Windows 95或98中，这些文件分布在多个Windows文件夹中，因此必须备份所有文件夹，以防遗漏。</P>
<P>2、备份到哪里<BR>对于一般的个人用户，你当然可以将数据备份在本地硬盘的其它分区中；但如果不是实在别无选择，请不要以为将重要数据备份到本地硬盘的其它分区上就是安全的，各种意外错误或是病毒、木马都很容易将你的整个硬盘数据毁于一旦。所以，我们的建议是将重要数据备份到本地硬盘以外的其它设备，如插拔式外部存储设备（如Zip、Jaz驱动器或USB/1394接口的活动硬盘）等、CD-R/RW或者网络上的其它硬盘。</P>
<P>硬盘数据恢复实例全解　之一</P>
<P><BR>硬盘数据恢复实例全解　之一<BR>难道在硬盘数据由于各种原因被破坏后，我们就只能自怨自艾？<BR>　这篇实例全解，就是希望在不幸的情况发生的时候，读者能够快速找到对应的解决方案，不至于让自己辛勤劳动成果白费。<BR>当然，我们最大的期望还是——你永远不要用到下面的方法！因为再完备的事后解决方案，也不能保证所有数据的完好无缺。而要真正做到万无一失，更重要的工作还在于防患于未然。 <BR>文件被删除<BR>一、症状<BR>这可能是最简单同时也是最常见的数据损坏，直接的表述就是一般删除文件后清空了回收站，或按住Shift键删除，要不然就是在“回收站”的“属性”中勾选了“删除时不将文件移入回收站，而是彻底删除”。 </P>
<P>二、解决方案<BR>既然是最常见的数据损坏，当然也就是最容易恢复的，下面就根据不同的操作系统给出相应的解决方案。<BR>1.Win9x/Me下的解决方案<BR>也就是FAT16/32分区下的文件误删除恢复，这应该是大部分恢复类软件的基本功能；而我们拿来作例子的软件Recover4all，所提供的功能仅为在Win9x/Me下恢复被误删除的文件——其实很多东西并不是一味求大求全就好，够用已足够，简单就是美。<BR>废话少说，我们需要先从Recover4all的主站点（<A href="http://www.recover4all.com">http://www.recover4all.com</A>）下载R4a.exe，这是一个自解压文件，你可以把其中的文件解压到软盘或硬盘的一个目录下（默认就是解压到软盘）。运行其中的rec4all.exe，会看见一个注册窗口，点击其中“To star the progam click”的按钮就能够进行试用（未注册版本只能恢复10KB以内的文件）。程序的主窗口下图所示，这是一个类似于“资源管理器”的窗口；你可以通过点击主菜单下方的盘符按钮来扫描相应分区下的被删除文件，然后在右边的窗口中选择需要恢复的文件，再点击主菜单下方的“Recover”按钮，并在新弹出的窗口中选择恢复文件的存放位置即可——Win9x/Me下的误删除文件恢复就这么简单。</P>
<P>硬盘数据恢复实例全解　之二</P>
<P><BR>2.WinNT/2000下的解决方案<BR>说法，也就是如何恢复在NTFS分区下被误删除的文件。对于这种相对简单的需求，File Scavenger（<A href="http://www.quetek.com/">http://www.quetek.com/</A>）完全就可以胜任。当然，File Scavenger是很具有针对性的——它只能在WinNT/2000系统下使用（同时必须以Administrator用户登录系统），而且只对NTFS格式的分区有效。不过它支持压缩过的NTFS分区或文件夹中文件的恢复，并对格式化过的NTFS分区中的文件也有效（注意:File Scavenger只可以对格式化过的分区中的文件进行恢复，并不能恢复整个被格式化过的分区）。<BR>File Scavenger目前有两种版本:硬盘安装版和软盘版（其下载的地址分别为:http://www.quetek.com/32fs140.exe和<A href="http://www.quetek.com/32fs140f.exe">http://www.quetek.com/32fs140f.exe</A>）。硬盘版的安装和一般软件类似，唯一需要注意的是——使用File Scavenger恢复文件的最安全方法就是在文件已经被删除之后安装File Scavenger（当然你不要将软件安装在删除文件所在的分区）。因为File Scavenger的功能比较单一，其执行文件加上所需的库文件一张1.44MB的软盘也可以装下，所以软盘版也许是大家使用得比较多的（你要把软盘版直接放在硬盘的一个目录下也照常可以使用）。下面的实例，我们就用软盘版来说明。<BR>一个非重要的文件Veryimportant.txt被误删除且清空了回收站；还好，你看过本篇“实例分析”而且也在软盘或硬盘上准备好了File Scavenger。OK，现在你运行其中的filescav.exe，你将会看见如下图的窗口。注意:其中的“搜索条件”可有多种格式（例如，*.doc、*、\data\*.txt等），根据你自己的需要填写最方便查找的；Exhaustive Sear复选框选择后会让你指定搜寻分区的簇大小以及搜索簇的范围，而指定之后File Scavenger会搜寻并显示所有存在的文件名称，不管是被删除的还是没有，因此没有特殊需要还是不用为好；在搜索结果窗口中可以通过点击“Filename”、“Size”、“Modified”等来为搜索结果排序，以方便寻找。<BR>现在我们已经找到了Veryimportant.txt，选择它并点击“Recover”按钮，如果文件能够被恢复，你就可以在先前指定的恢复文件存储路径中找到它（如果你是第一次使用File Scavenger，之前还会有一个窗口提醒你注册，如果不注册，你将只能恢复4KB以内的文件）。现在，还有什么可担心的？</P>
<P>三、不可恢复的情况</P>
<P><BR>如果文件在删除之后，其存储的磁盘空间进行过写操作，那在通常情况下恢复的几率为0。因此，误删除文件可以恢复的重要前提就是不要在删除文件所在的分区进行写操作。 <BR>病毒破坏　　<BR>一、症状<BR>　　现在使用电脑的人基本都是谈“毒”色变，病毒带来的数据破坏往往不可预见（包括分区表破坏、数据覆盖等；例如CIH病毒破坏的硬盘，其分区表已被彻底改写，用A盘启动也无法找到硬盘），由此病毒破坏硬盘数据的症状也不好描述，基本上大部分的数据损坏情况都有可能是病毒引起的，所以最稳妥的方法还是安装一个优秀的病毒防火墙。</P>
<P>硬盘数据恢复实例全解　之三 <BR>二、解决方案<BR>由于病毒破坏硬盘数据的方法各异，恢复的方案就需要对症下药。这里就以常见的CIH为例，因为它最普遍，也最容易判断（一般是在4月26日发作）。<BR>当用户的硬盘数据一旦被CIH病毒破坏后，使用KV3000的F10功能，可修复的程度如下:<BR>1.C盘容量为2.1G以上， 原FAT表是32位的，C分区的修复率为98%，D、E、F等分区的修复率为99%, 配合手工C、D、E、F等分区的修复率为100%。<BR>2.硬盘容量为2.1G以下，原FAT表是16位的，C分区的修复率为0%，D、E、F等分区的修复率为99%, 配合手工D、E、F盘的修复率为100%。<BR>因为原C盘是16位的短FAT表，所以C盘的FAT表和根目录下的文件目录都被CIH病毒乱码覆盖了。 KV3000可以把C盘找回来，虽然根目录的文件名字已被病毒乱码覆盖看不到了，但文件的内容影像还存储在C盘内的某些扇区上。推荐用KV3000找回C盘，再用文件修复软件TIRAMISU.EXE可将C盘内的部分文件影像找回来（需要了解这个软件的朋友可以访问Ontrack公司的主页<A href="http://www.ontrack.com">http://www.ontrack.com</A>……是不是在这个网站上找不到有关TIRAMISU的内容？呵呵，其实现在TIRAMISU已经被整合到Ontrack公司的旗舰产品——EasyRecovery中。相关的详细介绍可以参照本文的下一部分“分区表破坏”），如果原存放文件影像的簇是相连的，找回的文件就完整无损。<BR>　但对于FAT16的C盘是不是中了CIH就没救呢？你还是可以尝试一下FIXMBR（<A href="ftp://www.newhua.com/fixmbr102a.zip">ftp://www.newhua.com/fixmbr102a.zip</A>），它可以通过全盘搜索，决定硬盘分区，并重新构造主引导扇区。由于软件只修改主引导扇区记录，对其它扇区不进行写操作，故一般不会带来不安全目录（如果修复得不理想，请DiskEdit等工具进行手工修复）。注意:FIXMBR是一个比较老的程序，对WinNT、Linux以及FAT32考虑得不多。</P>
<P>三、不可恢复的情况<BR>　　由于病毒破坏硬盘的方式实在太多，而且大部分破坏都无法用一般软件轻易恢复（如果你喜欢使用DiskEdit等磁盘扇区编辑工具，对某些情况还有一线希望），所以……遇到病毒破坏硬盘的情况你就祈祷吧（由此看来，安装一个优秀的病毒防火墙绝对是有必要的）! <BR>分区表破坏<BR>“天有不测风云，人有旦夕祸福”，这句话可真没有说错，在用电脑的几年时间内，分区表破坏的情形也经历了好几次。想起当初的手足无措，到后来的才敢下手，一直到现在还是战战兢兢，不过所谓的“愚者千虑，必有一得”，经过这么长时间的折磨，也终于给我摸出来一丝门路，不敢独享，希望和遇到有困境的朋友们共享，也希望大家和我多交流（E-mail:clinuxer@yeah.net）……<BR>一、破坏原因及恢复可行性分析<BR>分区表破坏，可能是数据损坏中除了物理损坏之外最严重的一种灾难性破坏。究其原因，不外乎以下几种:<BR>1.个人误操作删除分区，只要没有进行其它的操作完全可以恢复。 <BR>2.安装多系统引导软件或者采用第三方分区工具，有恢复的可能性。<BR>3.病毒破坏，可以部分或者全部恢复。<BR>4.利用Ghost克隆分区/硬盘破坏，只可以部分恢复或者不能恢复（用Ghost的朋友要小心了）。</P>
<P>硬盘数据恢复实例全解　之四</P>
<P><BR>二、两点建议<BR>据国外的一个专业数据修复公司调查，数据损坏以后很大程度上是可以恢复的，之所以有很多不能恢复的实例存在，90%以上是由于用户在后来的恢复过程中有误操作，从而造成了更大的破坏。所以希望朋友们牢记以下两点:<BR>1.在硬盘数据出现丢失后，请立即关机，不要再对硬盘进行任何写操作，那样会增大修复的难度，也影响到修复的成功率.<BR>你的每一步操作都应该是可逆的（就像Norton Disk Doctor中的Undo功能）或者对故障硬盘是只读的（大名大名鼎鼎的EasyRecovery和Lost&amp;Found都是这种工作原理）。<BR>三、解决方案</P>
<P>　这个软件包含在Norton Utility系列工具中，功能十分强大，可以恢复分区记录、FAT表，需要注意的是它对硬盘的操作不是只读的，因此你需要每一步都做好Undo文件，这样即使误操作也可以恢复，Norton Disk Doctor配合DiskEdit在分区表不能恢复时也可以恢复部分文件，可惜Norton Disk Doctor不支持NTFS分区，这不能不说是它的一大遗憾之处……<BR>最专业的数据恢复公司出的软件，当然很有专业风范，EasyRecovery支持的文件系统格式很多FAT、NTFS都支持，并且有专门的For Novell版本。EasyRecovery对于分区破坏和硬盘意外被格式化都可安全的恢复，你所要做的就是将数据损坏硬盘挂到另外一台电脑上，尽情恢复就是了，不过EasyRecovery对于中文的文件名和目录名效果不是很好（一些乱码，但文章内容绝对是正确的）。由出品PartitionMagic的PowerQuest公司所出的，硬盘资料复原工具。它是一套恢复硬盘因病毒感染，意外格式化等因素所导致的资料损失工具软件，能将已删除的文件资料找出并恢复，也能找出已重新格式化的硬盘、被破坏的FAT分配表、启动扇区等等，几乎能找出及发现任何在硬盘上的资料（支持FAT16和FAT32及长文件名）。恢复回来的资料能选择在原来所在位置恢复或保存到其它可写入资料的硬盘，也提供了自动备份目录、文件和系统配置文件的功能，能在任何时间恢复）。要注意的一点是，尽量用一个很大的硬盘来装恢复的数据（最好挂双硬盘），如果目标盘的容量小于源盘的容量，下场会很惨！不过Lost&amp;Found却是基于DOS的一种软件，这在“瘟到死”横行的今天，市场只有越来越小！</P>
<P>&nbsp;</P>
<P><BR>四、&lt;B&gt;实战操作</P>
<P><BR>硬盘数据恢复实例全解　</P>
<P>　我的硬盘为IBM 9.44GB硬盘，分区情况如下:<BR>　一天被朋友用Win2000自带的磁盘管理工具将所有分区完全删除，并且删除之后没有进行任何操作。恢复工具的选择上，因为四个分区三个是FAT16，一个是NTFS，我决定首先用Norton Disk Doctor恢复三个FAT16分区，不过由于Norton Disk Doctor不支持NTFS，故采用支持NTFS的EasyRecovery。<BR>　1.FAT分区的恢复<BR>打开Norton Utility中的Norton Disk Doctor，NDD会自动为你检测硬盘分区情况，当检测到测盘2的分区表有问题时，跳出一个提示窗口，询问是否在访问磁盘2的过程中遇到麻烦，按下“Yes”按钮。<BR>　 接下来的弹出窗口中提示Norton Disk Doctor没有在磁盘2上发现任何DOS分区，是否要Norton Disk Doctor搜索并重建DOS分区，当然选择“Yes”（是）。<BR>很快又一个“Partition Search”（分区搜索窗口）弹出，提示找到一个2039MB的DOS分区，是不是要恢复，当然是“Yes”。<BR>在接下来的询问是否搜索更多的DOS分区窗口中选择“Yes”，又发现一个DOS分区，一直回答“Yes”直到Norton Disk Doctor找到3个DOS分区，由于NTFS分区Norton Disk Doctor不支持，所以在找到3个分区后，如果磁盘搜索程序询问你是否搜索更多的DOS分区时，选择“No”，重新启动计算机，发现丢失的三个FAT分区完全恢复，并且WinMe仍可正常启动。<BR>2.NTFS的恢复<BR>NTFS分区的恢复我们是使用EasyRecovery来实现的，打开EasyRecovery，按下“Next”（下一步）进入磁盘选择窗口，选中我的IBM-DTTA-351010下的“Unknown File System Type（4.43GB）”，按下“Next”。<BR>在接下来的窗口中你可以设置该分区的起始扇区号（Start Sector）和中止扇区号（End Sector），不用管它，按下“Next”继续。<BR>现在到了选择分区文件格式窗口，在“File system Type”的下拉式菜单中选择“NTFS”（我这里的分区格式是NTFS，你应该选择和你的条件相符的，如果实在不知道分区格式也可以选择“RAW”进行全盘搜索），搜索方式选择“Typical Scan”（特定搜索）就可以了，按下“Next”/“Next”。<BR>硬盘一阵轰隆隆的狂响之后，搜索结果终于出现在我们面前，将你需要恢复的文件前面打上钩，然后在下边的Destination中输入你恢复文件的目的路径，按下“Next”恢复吧……<BR>3.分区格式化的恢复<BR>分区格式化之后，只要其中没有写入任何文件，理论上我们仍然可以恢复。工具吗？当然还是EasyRecovery了，不过需要说明一点的是:由于格式化程序将根目录完全破坏所以用EasyRecovery恢复以后，你会看到一些DIR0、DIR1等目录（不过目录中的文件名还是完整的）！ 　　启动故障<BR>我等电脑用家，如果某一天硬盘不能启动，轻则使你陷入手忙脚乱之中，重则丢失重要资料，我们这里从硬盘启动的整个历程来为你详解每个阶段可能出现的问题以及应该采取的措施，解决你的手足无措之苦……</P>
<P>硬盘数据恢复实例全解　之四</P>
<P><BR>二、两点建议<BR>据国外的一个专业数据修复公司调查，数据损坏以后很大程度上是可以恢复的，之所以有很多不能恢复的实例存在，90%以上是由于用户在后来的恢复过程中有误操作，从而造成了更大的破坏。所以希望朋友们牢记以下两点:<BR>1.在硬盘数据出现丢失后，请立即关机，不要再对硬盘进行任何写操作，那样会增大修复的难度，也影响到修复的成功率.<BR>你的每一步操作都应该是可逆的（就像Norton Disk Doctor中的Undo功能）或者对故障硬盘是只读的（大名大名鼎鼎的EasyRecovery和Lost&amp;Found都是这种工作原理）。<BR>三、解决方案</P>
<P>　这个软件包含在Norton Utility系列工具中，功能十分强大，可以恢复分区记录、FAT表，需要注意的是它对硬盘的操作不是只读的，因此你需要每一步都做好Undo文件，这样即使误操作也可以恢复，Norton Disk Doctor配合DiskEdit在分区表不能恢复时也可以恢复部分文件，可惜Norton Disk Doctor不支持NTFS分区，这不能不说是它的一大遗憾之处……<BR>最专业的数据恢复公司出的软件，当然很有专业风范，EasyRecovery支持的文件系统格式很多FAT、NTFS都支持，并且有专门的For Novell版本。EasyRecovery对于分区破坏和硬盘意外被格式化都可安全的恢复，你所要做的就是将数据损坏硬盘挂到另外一台电脑上，尽情恢复就是了，不过EasyRecovery对于中文的文件名和目录名效果不是很好（一些乱码，但文章内容绝对是正确的）。由出品PartitionMagic的PowerQuest公司所出的，硬盘资料复原工具。它是一套恢复硬盘因病毒感染，意外格式化等因素所导致的资料损失工具软件，能将已删除的文件资料找出并恢复，也能找出已重新格式化的硬盘、被破坏的FAT分配表、启动扇区等等，几乎能找出及发现任何在硬盘上的资料（支持FAT16和FAT32及长文件名）。恢复回来的资料能选择在原来所在位置恢复或保存到其它可写入资料的硬盘，也提供了自动备份目录、文件和系统配置文件的功能，能在任何时间恢复）。要注意的一点是，尽量用一个很大的硬盘来装恢复的数据（最好挂双硬盘），如果目标盘的容量小于源盘的容量，下场会很惨！不过Lost&amp;Found却是基于DOS的一种软件，这在“瘟到死”横行的今天，市场只有越来越小！</P>
<P>四、&lt;B&gt;实战操作</P>
<P><BR>硬盘数据恢复实例全解　</P>
<P>　我的硬盘为IBM 9.44GB硬盘，分区情况如下:<BR>　一天被朋友用Win2000自带的磁盘管理工具将所有分区完全删除，并且删除之后没有进行任何操作。恢复工具的选择上，因为四个分区三个是FAT16，一个是NTFS，我决定首先用Norton Disk Doctor恢复三个FAT16分区，不过由于Norton Disk Doctor不支持NTFS，故采用支持NTFS的EasyRecovery。<BR>　1.FAT分区的恢复<BR>打开Norton Utility中的Norton Disk Doctor，NDD会自动为你检测硬盘分区情况，当检测到测盘2的分区表有问题时，跳出一个提示窗口，询问是否在访问磁盘2的过程中遇到麻烦，按下“Yes”按钮。<BR>　 接下来的弹出窗口中提示Norton Disk Doctor没有在磁盘2上发现任何DOS分区，是否要Norton Disk Doctor搜索并重建DOS分区，当然选择“Yes”（是）。<BR>很快又一个“Partition Search”（分区搜索窗口）弹出，提示找到一个2039MB的DOS分区，是不是要恢复，当然是“Yes”。<BR>在接下来的询问是否搜索更多的DOS分区窗口中选择“Yes”，又发现一个DOS分区，一直回答“Yes”直到Norton Disk Doctor找到3个DOS分区，由于NTFS分区Norton Disk Doctor不支持，所以在找到3个分区后，如果磁盘搜索程序询问你是否搜索更多的DOS分区时，选择“No”，重新启动计算机，发现丢失的三个FAT分区完全恢复，并且WinMe仍可正常启动。<BR>2.NTFS的恢复<BR>NTFS分区的恢复我们是使用EasyRecovery来实现的，打开EasyRecovery，按下“Next”（下一步）进入磁盘选择窗口，选中我的IBM-DTTA-351010下的“Unknown File System Type（4.43GB）”，按下“Next”。<BR>在接下来的窗口中你可以设置该分区的起始扇区号（Start Sector）和中止扇区号（End Sector），不用管它，按下“Next”继续。<BR>现在到了选择分区文件格式窗口，在“File system Type”的下拉式菜单中选择“NTFS”（我这里的分区格式是NTFS，你应该选择和你的条件相符的，如果实在不知道分区格式也可以选择“RAW”进行全盘搜索），搜索方式选择“Typical Scan”（特定搜索）就可以了，按下“Next”/“Next”。<BR>硬盘一阵轰隆隆的狂响之后，搜索结果终于出现在我们面前，将你需要恢复的文件前面打上钩，然后在下边的Destination中输入你恢复文件的目的路径，按下“Next”恢复吧……<BR>3.分区格式化的恢复<BR>分区格式化之后，只要其中没有写入任何文件，理论上我们仍然可以恢复。工具吗？当然还是EasyRecovery了，不过需要说明一点的是:由于格式化程序将根目录完全破坏所以用EasyRecovery恢复以后，你会看到一些DIR0、DIR1等目录（不过目录中的文件名还是完整的）！ 　　启动故障<BR>我等电脑用家，如果某一天硬盘不能启动，轻则使你陷入手忙脚乱之中，重则丢失重要资料，我们这里从硬盘启动的整个历程来为你详解每个阶段可能出现的问题以及应该采取的措施，解决你的手足无措之苦……</P>
<P>硬盘数据恢复实例全解　之七</P>
<P><BR>四、出错信息:主机加点自检，自检完毕，硬盘指示灯闪亮，屏幕出现:“Operting system not found”错误信息，硬盘启动失败。用软盘启动成功，试图进故硬盘时，出现:“Invalid drive Specification”错误信息。<BR>　故障分析:用Norton DiskEdit看磁盘的物理0扇区，发现分区结束标志55AA被破坏。<BR>　解决方案:这种问题我们也利用NDD来加以修复，如果你没有NDD，也可以采用相应的磁盘编辑工具，直接将物理0扇区的最后两个字符改为16进制的55AA就可以了。</P>
<P>五、出错信息:开机屏幕显示“Operting system not found”，用Win98启动以后有三条出错信息，在DOS下不能看到任何分区，用DiskEdit查看主引导扇区，发现已经被完全破坏。<BR>故障分析:这种问题应该是分区表被严重破坏的表现，可能是病毒或者人为的误操作（比如使用Ghost恢复分区时选择了错误的选项）。<BR>解决方案:参照前面我们介绍的“分区表破坏”来进行恢复。</P>
<P>六、出错信息:开机后屏幕上出现“Error loading operating system”或“Missing operating system”或者是“Disk I/O Error Replace the disk then press any key”的提示信息。<BR>　故障分析:造成该故障的原因一般是DOS引导记录出现错误。DOS引导记录位于逻辑0扇区，是由高级格式化命令Format生成的。主引导程序在检查分区表正确之后，根据分区表中指出的活动分区的起始地址，读DOS引导记录，若连续读五次都失败，则给出“Error loading opearting system”的错误提示，若能正确读出DOS引导记录，主引导程序则会将DOS引导记录送入内存0:7C00h处，然后检查DOS引导记录的最后两个字节是否为55AAH，若不是这两个字节，则给出“Missing operation system”的提示。<BR>解决方案:对于以上这些问题都可以使用NDD来解决，不过根据不同的出错提示还有不同的解决方案:<BR>　1.出错提示为“Invalid system disk，Replace the disk， and then press anykey”。这种情况一般是因为系统引导文件IO.sys被删除或者损坏，可以用“sys A: C:”将系统引导文件传送到C:盘。<BR>　2.“Error loading system”错误提示。这种提示说明分区表中标明的活动分区的起始位置错误或者DOS引导记录出错，只能用NDD修复。<BR>　3.“Missing operating system”出错提示。用DiskEdit编辑相应活动分区的引导区，并将最后分区结束标志改成55AA。</P>
<P><BR>硬盘数据恢复实例全解</P>
<P>对于以上几种出错信息，如果你的数据不是很重要，也可以考虑用Format来解决问题，不过我们强烈建议你采用NDD来修复，这样如果你改错了，还有后悔的余地（Undo），这也是我们前面告诫大家用NDD一定要做Undo的原因之所在。</P>
<P>七、出错提示:机器加电自检以后可以出现“Starting MS DOS…”的提示符，但是最后却出现了“Bad or missing command interpret”这样的出错提示。<BR>　故障分析:出现这种问题应该在DOS引导的后期，IO.SYS处理完MS.SYS后，要装入命令解释器Command.com却找不到。<BR>　解决方案:很简单，软盘启动以后，将软盘上的Command.com拷贝到C:盘的根目录下。</P>
<P>数据恢复与软故障处理基本指南 第一篇</P>
<P><BR>第一篇、广义的数据恢复 <BR>长期以来计算机领域数据恢复似乎缺乏一个把握全貌的，如果说给出一个比较能把握全貌的说法，我们首先应当给计算机数据一个广义的概念，某些人觉得只有类似文本文件、数据库中的记录或表这样的东西才是数据，其实从广义上说，任何位于计算机存储介质上的信息都是数据，无论是哪种介质，也无论是具体作用，他们都是数据。与这种概念对应，任何使这些信息发生非主观意愿之外的变化都可视为破坏。那么数据恢复是就是一个把异常数据还原为正常数据的过程。<BR>一、对数据的潜在威胁<BR>1、恶意的程序：大家最熟悉的恶意程序就是病毒，很多人认为病毒对数据的影响仅仅是病毒的破坏性，这是不正确的，实际上病毒的感染本身就是一种破坏，一个病毒无论他借助修改你的引导区、可执行程序还是OFFICE文档，他都把你正常的数据做了改变，当然，你可能举良性伴随性病毒这种极端的例子。但毫无疑问，他同样对数据构成了破坏，至少他减少了你的硬盘的可用空间。同时，恶意的程序还包括特洛伊木马，逻辑炸弹等等。恶意的程序造成的破坏可能是最难恢复的。<BR>2、其他恶意的破坏：即使不借助病毒或者其他的工具，只要拥有足够的权限，任何系统都有一定的“自毁”能力。比如依靠系统正常的删除、移动、格式化等操作也可以达到破坏数据的目的。随着网络技术的发展，威胁已经不仅仅限于本机，<BR>3、误操作：很多数据丢失源于使用者的操作失误，比如误删除，误格式化等等。<BR>4、操作系统或应用软件的错误：随着操作系统和应用程序的代码量的成倍增加，BUG也在不断增加。我们最常用的桌面系统WIN9X就是一个BUG大王。操作系统和应用软件的错误，往往会给人的工作带来一些不可预期的影响。比如前阶段，发现FRONTPAGE98的一个BUG，触发后会把你目录下的文件全部删除，另外，象著名的游戏神话II，出现了如不安装在默认目录中可能会使你丢失扩展分区这样严重的问题。 <BR>5、加密和权限：尽管加密和权限设置是你保护数据的有效手段，但遗忘密码也会带来很大的问题。<BR>6、掉电：机器突然掉电的后果可能不仅仅是内存数据的丢失，也可能造成磁盘数据的丢失，或导致系统无法正常启动。<BR>7、内存溢出：导致内存溢出或者进程非法终止等低层错误的原因很多，他就象掉电一样，会使你损失当前的工作。<BR>8、升级：软件系统升级有时会带来一些问题，后面我们将举相应例子。<BR>9、硬件损坏和失窃：这可能是最严重的威胁之一。有时这把你恢复数据的可能降低为零。<BR>二、数据丢失的各种逻辑现象<BR>对数据的恢复，基本上是一种逻辑处理。只有对情况有一个准确的判定，才能做出准确的应对。一般的来说，问题可以归纳为以下几种情况。<BR>1、 硬盘无法完成正确引导：因物理故障造成的逻辑损坏、引导区故障、重要扇区崩溃等等，都会使系统不能完成正常的自举过程。<BR>2、 文件丢失：由于有意破坏，误删除等等都会造成数据的丢失。另外，这种归类不仅仅包括某个或某几个文件，也适用于目录，分区或卷的丢失。<BR>3、 文件无法正常打开：由于病毒感染，加密，文件头损坏等情况，会使文件无法正常打开。<BR>4、 数据紊乱：由于各种因素的影响，数据库中的信息，文本文件等，可能面目全非。 <BR>三、保护数据的建议<BR>这个专题是探讨数据恢复的，而不是信息保护的，因此点到为止，一句话，那就是防患于未然，我们列举了对数据的威胁，如果我们最大程度的减弱了这些威胁，对每一种可预知的潜在威胁都有相应的预防和对策，我们的数据安全才会有最大的保障。这些对策主要包括选择良好的反病毒和系统维护产品、加强保安全措施、采用UPS掉电保护、提高用户操作水平和安全意识、形成系统的信息管理和备份制度等等。都可以有效的保证数据的安全，总之，我对数据恢复的认识与病毒是相同的——与其亡羊补牢，不如防患未然</P>
<P>数据恢复与软故障处理基本指南 第二篇</P>
<P><BR>第二篇、数据恢复的准备知识 <BR>1、系统工作机理的简单介绍（本节由lowpower缩写）这一部分在原作中是最重要的一章，考虑到篇幅关系，进行了大量的删节。<BR>①、 DOS（DOS兼容系统）硬盘数据的构成<BR>　　DOS磁盘系统，可以按照逻辑分区的概念管理物理空间，不同分区可以装载不同的OS系统。示意如下：<BR>硬盘空间<BR>第一扇区　|　分区1 |　分区2|　分区3 |分区4　|<BR>主引导扇区|引导扇区|引导扇区|引导扇区|引导扇区|<BR>各分区公用|各个分区相对独立，可安装不同操作系统。<BR>对FAT结构的分区每一分区都有独立的引导记录，FDT表，FAT表等。同时，系统还有一个最为重要的主引导记录。在0柱0面1扇区，今后我们用CYL代表柱、SIDE代表面，SEC代表扇区。以下一个FAT结构分区的简图。<BR>保留区－－磁盘参数表、DOS引导记录<BR>控制区－－FAT表1、FAT表2根目录区<BR>数据区－－数据区<BR>以下简单介绍一下重要的部分：<BR>主引导记录又称主分区表、MBR等等：MBR占一个扇区，在CYL 0、SIDE 0 、SEC 1，由代码区和数据区构成。其中代码区是一端标准的程序，完成 BIOS自举到OS BOOT之间的工作，为OS启动做最后的准备。标准代码区可以由FDISK/MBR重建，但对于多系统引导的不标准MBR，将被这一操作破坏。MBR的数据区记录了分区情况。<BR>系统扇区：CYL 0、SIDE 0 、SEC 1-CYL 0、SIDE 0 、SEC 63，共62个扇区引导区又称BOOT区：CYL 0、SIDE <BR>1 、SEC 1 这是我们过去称的DOS引导区。也占一个扇区。<BR>文件分配表又称FAT：是记录文件占用簇的情况和连接关系的地方。一般有两个FAT表，起到备份的作用。FAT12、FAT16的第一FAT表一般均在0-1-2，FAT32的第一FAT表在0-1-33。由于FAT表记录文件占用扇区连接的地方，如果两个FAT表都坏了，后果不堪设想。<BR>由于FAT表的长度与当前分区的大小有关所以FAT2的地址是需要计算的。<BR>根目录区（ROOT、FDT）：这里记录了根目录里的目录文件项等，ROOT区跟在FAT2后面。<BR>数据区：跟在ROOT区后面，这才是数据内容。<BR>其实， MBR、隐含扇区、BOOT区，重建都比较容易。数据恢复的关键在于恢复数据文件。由于FAT表记录了文件在硬盘上占用扇区的链表，如果2个FAT表都完全损坏了。那么恢复文件，特别是占用多个不连续扇区文件就相当困难了。<BR>②、 主引导记录简单说明：<BR>主引导记录是硬盘引导的起点，关于代码区不多说了，其数据区，比较重要的是2个标志，80H和55AA，80H一般在偏移1BE处，80是分区激活的标志的标记表示系统可引导，且整个分区表只能有一个80标记。另一个就是结尾的55AA标记，用来表示主引导记录是一个有效的记录。另外，各个分区自身的引导记录，也是以55AA结束，这是我们查找分区的标志。我们后面在介绍如何主引导记录中，给出了一个完整的分区表的例子，大家可对照查看。数据区中，用10H字节表示一个分区，最多可表示4个分区，分别从1BE、1CE、1DE、1EE开始，我们后面给出了分区表项对应地址的含义。大家可以对应分析一下以下分区的情况。<BR>80 01 01 00 0B FE BF FC 3F 00-00 00 7E 86 BB 00<BR>① ② ③ ④ ⑤ ⑥<BR>①：激活标记，80表示可引导分区<BR>②：分区开始的磁头号为01、开始的扇区号为01、开始的柱面号为00，由于开始的扇区号为2进制6位，而开始的柱面号为2进制10位，因此扇区号所用字节的高两位要加在柱面号高两位。<BR>③：分区的系统类型FAT32（0B），01是FAT12，04为FAT16，06为BIGDOS，07为NTFS，其他参见分区类型表。<BR>④：分区结束磁头号254、分区结束扇区号63、分区结束柱面号764<BR>⑤：首扇区的相对扇区号63<BR>⑥：总扇区数12289622 <BR>2、常见手工处理工具与DOS外部命令介绍<BR>DEBUG：古老和最为常见的调试跟踪软件，始终捆绑在微软的DOS/WIN9X操作系统中。有19个子命令。有编写执行汇编指令，直接读写绝对扇区和内存单元等功能，可以在最艰苦的条件下工作。DOS6.22以下的系统，DEBUG.EXE在DOS目录下，WIN9X系统中它在WINDOWS\COMMAND目录下，它也出现在WIN9X所生成的应急盘中。 <BR>DISKEDIT：常见16进制编辑软件，字符界面，可以以文件方式和扇区方式读写逻辑内容，可以读写绝对扇区，可以方便的查找编辑分区表、FAT表、ROOT区等重要扇区。这一点要比DEBUG更方便。但在一些重要扇区损坏的情况下，DISKEDIT可能无法启动。DISKEDIT软件可以在著名的Norton Utilities软件包中找到。最新的DISKEDIT出现在NU4中。<BR>NDD：常见的FAT文件结构磁盘修复工具，就是著名的NORTON磁盘医生，可以自动修复分区丢失等情况，可以抢救软盘坏区中的数据，强制读出后搬移到其他空白扇区。希望大家不要再使用NORTON FOR DOS7或8的NDD，这个版本由于不支持大分区、FAT32、长文件名等技术，会给你带来大量的麻烦。建议大家使用Norton Utilities4或更高版本中的NDD.EXE，这是纯DOS下的工具。在硬盘崩溃或异常的情况下，他可能可以带给用户以希望。WIN9X下的磁盘医生调用的并不是这个程序，而是NDD32.EXE.<BR>FDISK：FDISK当然是个危险的命令，很多人非常恐惧，事实上，FDISK命令的运行并不影响任何分区内的硬盘数据，他对分区的设置操作，只改变主分区表的数据区。而特别是FDISK异常重要的隐含参数/MBR，可以重建主分区表的代码区，清除主引导型病毒等。这是非常有用的操作。DOS6.22以下的系统，FDISK.EXE在DOS目录下，WIN9X系统中它在WINDOWS\COMMAND目录下，它也出现在WIN9X所生成的应急盘中。<BR>FORMAT：在一些人眼中，FORMAT是最可怕的命令，但他并不是对硬盘清零，特别值得注意的是，很多文件恢复工具都建议你恢复前先FORMAT该分区起到保护的饿作用。DOS6.22以下的系统，FORMAT.COM在DOS目录下，WIN9X系统中它在WINDOWS\COMMAND目录下，它也出现在WIN9X所生成的应急盘中。<BR>HD-COPY：传统的软盘COPY工具，2.0版本以后加入了强制读的功能，可以读出一些损坏扇区的内容。<BR>SYS：SYS命令是重建BOOT区的最简洁的手段，也可以杀除BOOT区病毒。DOS6.22以下的系统，sys.COM在DOS目录下，WIN9X系统中它在WINDOWS\COMMAND目录下，它也出现在WIN9X所生成的应急盘中。<BR>令我非常遗憾的是，至今我没有发现比较出色的扇区级备份镜象工具，我曾写过一个HD-MIRROR，但由于错误较多，我提供下载的第二天就停止了发布，另外fixc的作者noz写过一个clone.exe，但可惜只适合相同的硬盘。我也曾以为GHOST可以做到这点，事实上，你目前还不能指望他为你备份一块深度破损的硬盘。。如果有一个有效的能以按扇区机制（而不是文件机制）压缩备份一块硬盘将之做成一个镜象文件的话，那么我们的恢复工作就拥有了更多的保证和余地。我们可以更大胆的做恢复的尝试。<BR>3、一些自动处理工具或软件包<BR>首先介绍国内的一些免费修复工具<BR>FIXMBR：何公道先生写的一个修复MBR的工具，适合处理逻辑分区丢失的情况， 有一些可选参数，支持FAT32、FAT16，不支持NTFS、LINUX等分区，支持8.4G以上硬盘。可修复CIH发作后的扩展逻辑分区。<BR>VRVFIX：北信源公司的推出的修复硬盘共享工具，适合处理逻辑分区丢失的情况，处理的基本比较准确。支持FAT32、FAT16，不支持NTFS、LINUX等分区。也不支持8.4G以上硬盘。<BR>FIXC：国内最早出现的可以修复部分被CIH破坏的C盘的工具，作者是NOZ，新版本也加入了修复分区信息的功能，支持FAT32、FAT16，有限支持NTFS，不支持8.4G以上硬盘。目前的版本已经比较完善。<BR>FIXHDPT：TBSOFT工作室的分区信息修复工具。支持FAT32、FAT16，不支持NTFS和LINUX，不支持8.4G以上硬盘，是历史比较长的工具之一。<BR>RE(ReapirEasy)：本人早期写的分区表修复工具，支持FAT32、FAT16，有限支持NTFS，不支持8.4G 以上硬盘，和某些BIOS不兼容。其整体水准低于前面列举的工具。国外一些系统维护的工具目前已经达到了非常强大的程度。<BR>Norton Utilities：历史最悠久的系统维护工具。不仅可以数据恢复，还可以系统加速和修补内存错误。目前最新的版本是NU4.5 FOR 9X、NU2 FOR NT等。<BR>Tiramint：最为出色的灾难恢复工具之一，有NTFS、FAT32、FAT16、NOVELL4种版本。生成急救软盘，可以对深度破坏的磁盘进行交叉恢复。</P>
<P>4、常用的基本操作<BR>① 读出主引导记录：这是系统级数据恢复可能涉及最多的程序之一。例：<BR>DEBUG<BR>-a100 ；从此处开始汇编<BR>126C:0100 mov ax,201； 读操作一个扇区<BR>126C:0103 mov bx,300； 送入地址300<BR>126C:0106 mov cx,1 ；0面1扇<BR>126C:0109 mov dx,80 ；80H为硬盘，头为0<BR>126C:010C int 13<BR>126C:010E int 3<BR>126C:010F<BR>-g=100 ；执行<BR>AX=0050 BX=0300 CX=0001 DX=0080 SP=FFEE BP=0000 SI=0000 DI=0000 DS=126C ES=126C SS=126C CS=126C IP=010E NV UP EI PL NZ NA PO NC<BR>这里用了I/O中断13，涉及的寄存器含义为ah,操作方式，02H为读，03H为写，al送扇区数，bx送准备装入扇区的内存偏移地址，cx送从哪一道哪一扇区开始，我们一般依靠改换CX来读写不同逻辑盘某个逻辑扇区。dx送盘符和头数INT　3是断点中断，使程序运行到此停止。<BR>② 显示引导区内容：我们把扇区读到某个内存地址并不是目的。而是为了看到他的内容，在DEBUG中D命令可以方便的查看内存单元的内容。续前例，如果我们要看到主引导区的内容的话，既然装载到300。-d300 l200就可以查看了，一个引导区的映象类似如下，可以直观的看 到我们前面所提到的代码区和数据区。是否正常请大家自行分析一下<BR>126C:0300 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....|<BR>126C:0310 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BE BE 07 B1 04 ...PW...........<BR>126C:0320 38 2C 7C 09 75 15 83 C6-10 E2 F5 CD 18 8B 14 8B 8,|.u...........<BR>126C:0330 EE 83 C6 10 49 74 16 38-2C 74 F6 BE 10 07 4E AC ....It.8,t....N.<BR>126C:0340 3C 00 74 FA BB 07 00 B4-0E CD 10 EB F2 89 46 25 &lt;.t...........F%<BR>126C:0350 96 8A 46 04 B4 06 3C 0E-74 11 B4 0B 3C 0C 74 05 ..F...&lt;.t...&lt;.t.<BR>126C:0360 3A C4 75 2B 40 C6 46 25-06 75 24 BB AA 55 50 B4 :.u+@.F%.u$..UP.<BR>126C:0370 41 CD 13 58 72 16 81 FB-55 AA 75 10 F6 C1 01 74 A..Xr...U.u....t<BR>126C:0380 0B 8A E0 88 56 24 C7 06-A1 06 EB 1E 88 66 04 BF ....V$.......f..<BR>126C:0390 0A 00 B8 01 02 8B DC 33-C9 83 FF 05 7F 03 8B 4E .......3.......N<BR>126C:03A0 25 03 4E 02 CD 13 72 29-BE 46 07 81 3E FE 7D 55 %.N...r).F..&gt;.}U<BR>126C:03B0 AA 74 5A 83 EF 05 7F DA-85 F6 75 83 BE 27 07 EB .tZ.......u..'..<BR>126C:03C0 8A 98 91 52 99 03 46 08-13 56 0A E8 12 00 5A EB ...R..F..V....Z.<BR>126C:03D0 D5 4F 74 E4 33 C0 CD 13-EB B8 00 00 00 00 00 00 .Ot.3...........<BR>126C:03E0 56 33 F6 56 56 52 50 06-53 51 BE 10 00 56 8B F4 V3.VVRP.SQ...V..<BR>126C:03F0 50 52 B8 00 42 8A 56 24-CD 13 5A 58 8D 64 10 72 PR..B.V$..ZX.d.r<BR>126C:0400 0A 40 75 01 42 80 C7 02-E2 F7 F8 5E C3 EB 74 49 <A href="mailto:.@u.B......^..tI">.@u.B......^..tI</A><BR>126C:0410 6E 76 61 6C 69 64 20 70-61 72 74 69 74 69 6F 6E nvalid partition<BR>126C:0420 20 74 61 62 6C 65 00 45-72 72 6F 72 20 6C 6F 61 table.Error loa<BR>126C:0430 64 69 6E 67 20 6F 70 65-72 61 74 69 6E 67 20 73 ding operating s<BR>126C:0440 79 73 74 65 6D 00 4D 69-73 73 69 6E 67 20 6F 70 ystem.Missing op<BR>126C:0450 65 72 61 74 69 6E 67 20-73 79 73 74 65 6D 00 00 erating system..<BR>126C:0460 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................<BR>126C:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................<BR>126C:0480 00 00 00 8B FC 1E 57 8B-F5 CB 00 00 00 00 00 00 ......W.........<BR>126C:0490 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................<BR>126C:04A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................<BR>126C:04B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01 ................<BR>126C:04C0 01 00 0B FE BF FC 3F 00-00 00 7E 86 BB 00 00 00 ......?...~.....<BR>126C:04D0 81 FD 0F FE FF FF BD 86-BB 00 E0 A9 75 00 00 00 ............u...<BR>126C:04E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................<BR>126C:04F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.③ 反汇编主引导区内容：判定MBR的代码区是否正常，对于数据区的基本情况，我们可以通过直观观察得出，但对于存在引导型病毒，或者引导区出现异常代码的情况，我们可能需要分析MBR中代码区的指令。这一般要对已经读入内存的引导区进行反汇编。反汇编用指令U，续前例：<BR>-u300 l15D ；反汇编主引导扇区代码区内容<BR>126C:0300 33C0 XOR AX,AX<BR>126C:0302 8ED0 MOV SS,AX<BR>…………<BR>126C:045C 65 DB 65<BR>126C:045D 6D DB 6D<BR>④ 写内存单元，在我们的前例中，主分区类型是0B是FAT32的，假定这个类型实际是NTFS的，我们该如何修改呢？由于主分区类型的偏移是4C3H，我们可以用E命令写到内存单元中，从附表中查得NTFS的类型为07。因此-e4c3 7再比如说，假定我们想把无效的分区表清零，那么，我们应当用另一个命令F，这个命令可以用填充一个内存地址范围。清零分区表的操作就是-f4be 4ff 00，以下两个操作也比较常见。<BR>重置80标记，-e4be 80<BR>重置55AA标记，-f4ff 4fe 55 aa<BR>不要忘记了，此时仅仅是改动了内存中的数据，并未写到硬盘上。因此需要用int 13中断把改写的结果，写回硬盘。续前例，<BR>-a100<BR>126C:0100 mov ax,301 ； 写操作一个扇区<BR>-g=100 ；执行<BR>其实，我们相当于修改了刚才输入的读主引导扇区程序，使程序变为。<BR>126C:0100 mov ax,301 ； 写操作一个扇区<BR>126C:0103 mov bx,300 ；从内存地址300<BR>126C:0106 mov cx,1 ；0面1扇<BR>126C:0109 mov dx,80 ；80H为硬盘，头为0<BR>126C:010C int 13<BR>126C:010E int 3 ；断点<BR>⑤ 绝对磁盘内容的读出与写入<BR>类似操作在FAT32结构硬盘被CIH破坏的修复中比较常见，我们后面将讲到恢复的基本思路就是用第二FAT表覆盖第一FAT表。那么无疑要读出第二FAT表的内容，再回写到第一FAT表的位置上。一般的来说，大量连续扇区的读出写入DISKEDIT进行非常方便，如果用DEBUG做则要写一段子程序，不过程序的主要技巧就是利用int 25绝对磁盘读中断读出的内容，而用int 26绝对磁盘写做内容写入。<BR>5、数据可恢复的前提<BR>有人觉得这个题目说法比较奇特，但数据恢复，作为一个数据再现的过程，一定要解决两个问题，第一是从哪里恢复的问题，第二是怎么恢复的问题。解决了这两个问题，我们事实上就把握了数据恢复的全部思想脉络。而这一部分就是从哪里恢复的问题。<BR>①、 有效而及时的备份中是数据恢复最可靠的来源，在许多人倡导备份到秒的今天，恐怕不会有人怀疑这点。而有些备份机制则是系统内建的，比如两份FAT表。<BR>②、 数据的实际有效性的判定是关键，对我们来说，硬盘无法自举、文件找不到、文件打不开等现象，其实并不与数据丢失画等号。因为此时往往数据只是从操作系统的角度是一种逻辑丢失，而从物理扇区意义上，它仍然存在或部分存在。最明显的就是文件删除的例子，事实上，这只是把文件首字节，改为0E而已。而此时文件体依然存在。<BR>③、 数据损坏过程的可逆性分析：对数据的改变无非两种，取代和变换，前者是不可逆的，而后者则是可逆的。我们以杀毒为例，对于大多文件性病毒来说，那些以附加而非代换方式感染的文件型病毒，理想的杀毒过程就是感染的逆过程。这种分析也常见与重要信息被隐藏搬移或者被加密的情况，但分析将比较复杂。<BR>④、 数据本身是否是标准信息：有些信息实际是通用或局部通用的，你无须考虑如何从本机抢救。只要相同或相近的系统版本就可以了，比如BOOT区、隐含扇区、WINDOWS的DLL文件等等。典型的例子如分区表的代码区，这是一段标准代码，事实上，它就放在你的FDISK程序里面，你可以用DEBUG把他提取出来。<BR>⑤、 数据本身是否可以由其他信息统计再生：有些信息尽管丢失了，也没有备份。但它实际可以从其他数据中间接求得。最典型的就是主分区表中的分区信息，即使你把他清零也不必害怕，因为你可以从你几个分区中计算再生。<BR>⑥、 破坏的完成程度：事实上，FDISK、FORMAT都不会彻底破坏数据，一般只有低格和扇区覆盖操作才会彻底破坏数据。但有时，破坏过程或者误操作过程会因人工终止、死机等原因不能完成。最明显的就是CIH病毒的例子，由于CIH是以1024字节为单位覆盖扇区，这当然是不可逆过程，于是我们最初都认为，破坏是很难恢复的，除非人工终止。事实上，当病毒覆盖某些扇区时会与9X系统发生冲突，从而造成死机，使数据得到了保护。</P>
<P>数据恢复与软故障处理基本指南 第三篇</P>
<P><BR>第三章、数据恢复基本攻略<BR>1、 硬件或介质问题的情况<BR>①、硬盘坏：硬盘自检不到的情况一般是硬件故障，又可分为主版的硬盘控制器（包括IDE口）故障和硬盘本身的故障。如果问题在主板上，那么数据应当没有影响。如果出在硬盘上，也不是一定不能修复。硬盘可能的故障又可能在控制电路、电机和磁头以及盘片。如果是控制电路的问题，一般修好它，就可以读出数据。但如果电机、磁头和盘片故障，即使修理也要返回原厂，数据恢复基本没有可操作性。<BR>②、软盘坏：当软盘数据损坏时，可以有几种处理，一种是用NDD修复，他会强制读出你坏区中的东西，MOVE到空白扇区中，这就意味着如果你的磁盘很满操作是没法进行的。你也可以用HDCOPY2.0以上版本READ软盘，他也会进行强读，使读入缓冲区的数据是完好的，你再写入一张好磁盘就可以了。当然这些方式，要看盘坏的程度。如果0磁道坏，数据也并非无法抢救，早先可以通过扇区读的方式，把后面的数据读出，不过一般来说，你依然可以HDCOPY来实验。<BR>2、系统问题的情况<BR>①、在硬盘崩溃的情况下，我们经常要和一些提示信息打交道。我们要了解他典型提示信息的含义，注意这些原因仅仅分析逻辑损坏而不是硬盘物理坏道的情况。<BR>提示信息<BR>可能原因<BR>参考处理<BR>Invalid Partition Table<BR>分区信息中1BE、1CE、1DE处不符合只有一个80而其他两处为0<BR>用工具设定，操作在前面已经讲了。<BR>Error Loading Operating System<BR>主引导程序读BOOT区5次没成功。<BR>重建BOOT区<BR>Missing Operating System<BR>DOS 引导区的55AA标记丢失<BR>用工具设定，把前面读写主引导区程序的DX=80改为180即可<BR>Non-System Disk or Disk Error<BR>BOOT区中的系统文件名与根目录中的前两个文件不同<BR>SYS命令重新传递系统，<BR>Disk Boot Failure<BR>读系统文件错误<BR>SYS命令重新传递系统，<BR>Invalid Driver Specifcationg<BR>如果试图切换到一个确实存在的逻辑分区出现以下信息，说明主分区表的分区记录被破坏了。<BR>根据各分区情况重建分区表，或者用自动修复工具修复。注意分区丢失是最常见的故障之一，此时不要紧张，一般的说此时数据并没有问题，如果你不了解处理的方法。你可以选择我前面介绍的自动修复分区工具进行处理，他们大多只改写主分区表的数据区，不会影响你的其他数据。特别提醒大家，这些工具有的不支持8.4G硬盘，有的与BIOS对硬盘的识别有关系。如果你在一台机器上不行，可以换台BIOS不同的机器实验一下。<BR>Bad or missing command interpreter<BR>这是说找不到COMMAND.com，或者COMMAND文件坏了。<BR>如果你COPY过去COMMAND文件还是如此，一般来说是感染了某种病毒。<BR>Invalid media type reading drive<BR>X ,Abort,Retry,Fail?<BR>该盘没有高级格式化，或BOOT区中I/O参数表被破坏。<BR>这里情况较多，手工处理比较复杂，特别指出，此时DISKEDIT可能无法运行，建议用工具修复。<BR>Incorrect DOS Version<BR>可能是文件版本不统一，对9X来说，有95，95osr/2,98,98 oem/2等版本，重新SYS时，不要弄错了。<BR>用正确版本的启动盘重新SYS系统。<BR>另外说明一下，对于比较老的机器还有1071和not found rom basic、ROM BASIC OK等提示，在目前机器中以消失。另外，当代码区完全被破坏的情况下，系统关于无系统的提示是来自BIOS的，这条提示与BIOS的种类有关。另外，FDISK/MBR对代码区的重建是我们经常采用的。再介绍一种比较极端的情况，就是硬盘自检正常，而用软盘和硬盘都无法正常启动的情况，这可能是，病毒或恶意程序利用，DOS3以上版本启动中都要检索分区表这一特点，把分区表置为死循环。造成启动中死机。网上曾经流传过DOS6.22k修改方案，其实是修改西文MS-DOS6.22的 IO.SYS，把C2 03 06 E8 0A 00 07 72 03替换为：C2 03 90 E8 0A 00 72 80 90就可以启动被类似情况锁住的硬盘。<BR>②、WIN9X无法正常进入或工作：以下仅仅是对可能的软故障分析，没有考虑硬件故障.&lt;BR&gt;　　进入图形界面前死机情况比较复杂，可能与加载的某些驱动有关可以在START MS WINDOWS时，用F8激活菜单，设置为step by step，看是哪项使系统死机。而后从CONFIG或者SYSTEM。INI中删除<BR>进入图形界面后死机： 一般这与开机加载的程序有关进入安全模式（此时自动运行的程序将不能加载），对注册表中的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run*中的键值和启动组中加载的程序进行分析。必要的予以删除。<BR>显示IEXPLORE.EXE错误，不能进行任何操作可能有某个系统的动态连接库损坏覆盖安装WIN9X，或从其他机器上COPY损坏的连接库。（确定哪个库损坏一般比较困难）<BR>频繁出现出错各种信息：一般是虚拟内存不足造成的看C盘是否剩余空间过少，或者打开的应用程序和窗口太多。<BR>2、全盘崩溃和分区丢失<BR>首先重建MBR代码区，再根据情况修正分区表。修正分区表的基本思路是查找以55AA为结束的扇区，再根据扇区结构和后面是否有FAT等情况判定是否为分区表，最后计算填回，主分区表，由于需要计算，过程比较烦琐，就不仔细介绍了，希望大家用前面介绍的工具，比如NDD处理。如果文件仍然无法读取，要考虑用TIRAMINT等工具进行修复。如果在FAT表彻底崩溃的情况下，恢复某个指定文件，可以用DISKEDIT或DEBUG查找已知信息。比如文件为文本，文件中包含“软件狗”，那么我我们就要把他们转换为内码C8 ED BC FE B9 B7进行查找。<BR>3、文件丢失、误格式化的情况<BR>一般的来说，文件删除仅仅是把文件的首字节，改为E5H，而并不破坏本身，因此可以恢复。但由于对不连续文件要恢复文件链，由于手工交叉恢复对一般计算机用户来说并不容易，在这篇缩略版中就不讲了，建议用工具处理，如果已经安装了Norton Utilities，可以用他来查找。另外，RECOVERNT 等工具，都是恢复的利器。特别注意的是，千万不要在发现文件丢失后，在本机安装什么恢复工具，你可能恰恰把文件覆盖掉了。特别是你的文件在C盘的情况下，如果你发现主要文件被你失手清掉了，（比如你按SHIFT删除），你应该马上直接关闭电源，用软盘启动进行恢复或把硬盘串接到其他有恢复工具的机器处理。误格式化的情况可以用工具处理。<BR>4、文件损坏的情况<BR>一般的说，恢复文件损坏需要清楚的了解文件的结构，并不是很容易的事情，而这方面的工具也不多。不过一般的说，文件如果字节正常，不能正常打开往往是文件头损坏。就文件恢复举几个简单例子。<BR>类型<BR>特征<BR>处理<BR>ZIP、TGZ等压缩包无法解压<BR>ZIP文件损坏的情况下可以用一个名为ZIPFIX的工具处理。不过如果你的文件是从FTP站点上下载的，那么有可能是你没有定义下载模式为BIN。<BR>自解压文件无法解压&lt;BR&gt;可能是可执行文件头损坏，可以用对应压缩工具按一般压缩文件解压。<BR>DBF文件死机后无法打开&lt;BR&gt;典型的文件头中的记录数与实际不匹配了，把文件头中的记录数向下调整，遗憾的是公式我找不到了。<BR>5、硬盘被加密或变换<BR>此时千万不要FDISK/MBR，SYS等处理，否则可能数据再也无法找回，一定要反解加密算法，或找到被移走的重要扇区。对于那些加密硬盘数据的病毒，清除时一定要选择能恢复加密数据的可靠杀毒软件。<BR>6、文件加密后密码遗忘<BR>对于很多字处理软件的文件加密和ZIP等压缩包的加密，你是不能靠加密逆过程来完成的，因为那从理论上是异常困难的。目前有一些相关的软件，他们的思想一般都是用一个大字典集中的数据循环用相同算法加密后与密码的密文匹配，直到一致时则说明找到了密码。你可以去寻找这些软件，当然，有些软件是有后门的，比如DOS下的WPS，Ctrl+qiubojun就是通用密码。Undiskp的作者冯志宏是解文件密码的个中高手，大家不妨去他的主页看看。<BR>7、系统用户密码遗忘的处理：最简单的方法就是用软盘启动（NT的你也可以把盘挂接在其他NT上），找到支持该文件系统结构的软件（比如针对NT的NTFSDOS），利用他把密码文件清掉、或者是COPY出密码档案，用破解软件套字典来处理。前者时间短但所有用户信息丢失，后者时间长，但保全了所有用户信息。对UNIX系统，我建议你一定先做一张应急盘。</P></div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200862993346388</comments>
    <slash:comments>3</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200862993346388</guid>
    <pubDate>Tue, 29 Jul 2008 21:33:46 +0800</pubDate>
    <dcterms:modified>2008-07-29T21:33:46+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ws2_32.dll的妙用与删除]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200862991851285</link>
    <description><![CDATA[<div><P>如果不想让别人使用某个软件<BR>只要在其安装目录下新建一个文件名为ws2_32.dll的文件，这样系统就会以文件出错误而禁止运行（可以新建一个内容为空的文件夹，然后改名为ws2_32.dll）<BR>本方法适用基于NT系统的WinXP,Win2000,Win2003<BR>比较险恶~~用的时候再删除该文件就是。<BR>想在自己电脑上禁止朋友玩游戏，又不能让人看出来是故意的（伤害感情）,这招就够绝的~~<BR>比如：<BR>把其放在QQ的安装文件夹下面，就ok了，不过要记得自己用的时候把它删了。<BR>[原因]程序运行时会自动调用ws2_32.dll文件，ws2_32.dll是个动态链接库文件，位于系统文件夹中，Windows在查找动态链接库文件时，会先在应用程序当前目录搜索，如果没有找到然后才会搜索Windows所在目录，如果还是没有会搜索system32和system目录。新建的 ws2_32.dll文件不具备真正地ws2_32.dll文件所具有的功能，所以程序就无法运行了。<BR>&nbsp;&nbsp;<BR>===================================================================<BR>ws2_32.dll是Windows Sockets应用程序接口，用于支持Internet和网络应用程序。程序运行时会自动调用ws2_32.dll文件，ws2_32.dll是个动态链接库文件位于系统文件夹中。Windows在查找动态链接库文件时会先在应用程序当前目录搜索，如果没有找到然后才会搜索Windows所在目录；如果还是没有会搜索system32和system目录。一些病毒利用此原理在杀毒软件目录中建立伪"ws2_32.dll"的文件或文件夹,在杀毒软件看来这是程序运行需要的文件而调用，这个所谓的“文件”又不具备系统"ws2_32.dll"文件的功能，所以杀毒软件等就无法运行了而提示：应用程序正常初始化(0xc00000ba)失败！<BR>　　 伪"ws2_32.dll"文件夹其实重命名之后程序就可以运行的,但是有个没用的又无法删除的文件夹看着也不舒服，因此这个内部含有非法文件名的文件夹就用下面方法删除！<BR>　　 ①解压附件里面的文件（修复“显示所有文件和文件夹”.reg），双击它修复显示所有文件和文件夹。然后在资源管理器上点击工具&gt;&gt;选项 &gt;&gt;查看，将隐藏受保护的操作系系统（推荐）的勾去掉，勾选显示所有文件和文件夹之后一路的确认，好了现在隐藏的文件全部显示出来。（临时解决办法可以将ws2_32.dll文件夹改个名称，要彻底删除请往下看。）<BR>　　 ②到杀毒软件的安装目录下找到以伪"ws2_32.dll"的文件夹(一般隐藏的文件夹颜色略白)。<BR>　　 ③解压附件里面的“将畸形文件托到我上面.bat”到任意目录，用鼠标左键点击将要删除的ws2_32.dll文件或者文件夹(一般这些目录下的隐藏文件都需要删除)按住不松然后拖放到该文件图标上（就像把文件拖到文件夹里的操作一样,此工具双击是不能运行的），OK一个CMD窗口闪烁之后伪 "ws2_32.dll"文件夹就被删除了。你需要的软件就可以启动了！此批处理文件也可以删除其他文件名怪怪的文件。<BR></P>
<P>&nbsp;</P>
<P>ws2_32 - ws2_32.dll - DLL文件信息 <BR><BR>DLL 文件： ws2_32 或者 ws2_32.dll<BR><BR>DLL 名称： WinSock 2.0 32bit<BR><BR>描述： <BR><BR>ws2_32.dll是Windows Sockets应用程序接口，用于支持Internet和网络应用程序。 <BR><BR>属于： Windows Sockets <BR><BR>系统 DLL文件： 是<BR><BR>常见错误： File Not Found, Missing File, Exception Errors</P></div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200862991851285</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200862991851285</guid>
    <pubDate>Tue, 29 Jul 2008 21:18:51 +0800</pubDate>
    <dcterms:modified>2008-07-29T21:18:51+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[C盘根目录下文件大揭秘]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200861665337529</link>
    <description><![CDATA[<div>经常见到一些网友，跟U盘病毒作斗争久了，养成了看到磁盘根目录的隐藏文件就删的“职业习惯”，结果当自己买来新电脑的时候，一下子看到C盘下有那么多“病毒”，就全部删了，结果……下次开机的时候系统就起不来了，汗……<BR><BR>所以，我感觉有必要跟大家讲一讲C盘下这些系统文件的作用，以及简要介绍一下系统的启动过程。下面，就请我为大家一一道来：<BR><BR><B>CONFIG.SYS</B><BR><BR>CONFIG.SYS是包含在DOS（磁盘操作系统，Disk Operating System）中的一个文本文件命令，它告诉操作系统计算机如何初始化。多数情况下，CONFIG.SYS命令制定内存设备驱动和程序，以控制硬件设备；开启或进制系统特征；以及限制系统资源。CONFIG.SYS在autoexec.bat（自动批处理程序）文件执行前载入。 <BR><BR><B>AUTOEXEC.BAT</B><BR><BR>DOS在启动会自动运行autoexec.bat这个文件，一般我们在里面装载每次必用的程序，如: path(设置路径)、smartdrv(磁盘加速)、 mouse(鼠标启动)、mscdex(光驱连接)、 doskey(键盘管理)、set(设置环境变量)等。 <BR><BR><B>IO.SYS</B><BR><BR>IO.SYS提供标准硬件的输入/输出接口和DOS的中断调用，在电脑启动过程中，此文件会根据用户通过输入设备的信号执行相应的操作。大家常挂在嘴边的<B>“开机按F8进入安全模式”</B>就是来自于这个文件的作用 <BR><BR><B>boot.ini</B><BR><BR>当我们在电脑中安装了多系统（如Windows 2000和Windows XP）之后，每次启动计算机时都会出现一个系统引导菜单，在此选择需要进入的系统后回车即可。这个引导程序就是Boot.ini，在安装Windows 2000（XP）时程序自动被安装，使用它我们可以轻松对电脑中的多系统进行引导，还可以通过该引导文件，设置个性化的启动菜单。<BR><BR>系统主要依赖Boot.ini文件来确定计算机在重启（引导）过程中显示的可供选取的操作系统类别。Boot.ini在缺省状态下被设定为隐含和系统文件属性, 并且被标识为只读文件。<BR><BR>双击boot.ini，我们通常能看到如下的内容<BR><BR>[boot loader]<BR><BR>timeout=30<BR><BR>default=scsi(0)disk(0)rdisk(0)partition(1)\WINDOWS<BR><BR>[operating systems]<BR><BR>scsi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect<BR><BR>对其分析，主要有以下功能<BR><BR>“timeout”指定在选择默认的操作系统之前 Windows等待的时间。<BR><BR>“default”指定默认的操作系统。<BR><BR>“scsi(0)”表示主控制器（通常也是唯一的控制器）负责此设备。如果有两个 SCSI 控制器并且磁盘与第二个控制器相关联，则第二个控制器称为“scsi(1)”。<BR><BR>如果系统使用 IDE、增强的 IDE (EIDE) 或增强的小型设备接口 (ESDI) 驱动器，或者如果系统使用没有内置 BIOS 的 SCSI 适配器，请将“scsi”替换为“multi”。 <BR><BR>“disk(0)”指要使用的 SCSI 逻辑单元 (LUN)。它可以是独立的磁盘，但是大多数 SCSI 设置对每个 SCSI ID 只有一个 LUN。<BR><BR>“rdisk(0)”指物理磁盘1。<BR><BR>“partition(1)”是计算机中第一个驱动器上的第一分区。如果有两个分区（C 和 D），则分区 C 为 partition(1)，分区 D 为 partition(2)。<BR><BR>“/noexecute=optin /fastdetect”指定快速监视并调试信息，启动时不检查串行口和并行口。 <BR><BR><B>bootfont.bin</B><BR><BR>BOOTFONT.BIN是用来汉化引导菜单的，删除后引导菜单会变成英文<BR><BR><B>MSDOS.SYS</B><BR><BR>MSDOS.SYS是DOS的核心文件之一。<BR><BR>MSDOS.SYS 在微软非NT内核的操作系统中经常可以看到它。MSDOS.SYS可以修改，但改坏了可能会导致系统无法启动，可以用记事本打开，内面是一些启动参数，如：开机时显示菜单、开机时进行磁盘扫描、开机时显示LOGO等等。 <BR><BR><B>NTDETECT.COM</B><BR><BR>Ntdetect.com会收集如下类型的硬件信息：<BR><BR>系统固件信息，例如时间和日期等<BR><BR>总线适配器的类型<BR><BR>显卡适配器的类型<BR><BR>键盘<BR><BR>通信端口<BR><BR>存储设备<BR><BR>其它输入设备，例如鼠标等<BR><BR>并口<BR><BR>安装在ISA槽中的ISA设备<BR><BR>完成信息的检测之后，系统就会在屏幕上显示那个Windows图标，并出现一个滚动条，告诉用户Windows 的启动进程 <BR><BR><B>ntldr</B><BR><BR>NTLDR全称是NT Loader，是系统加载程序，用来装载操作系统。<BR><BR>NTLDR文件是系统的引导文件，当此文件丢失时启动系统会提示"NTLDR is missing..."并要求按任意键重新启动，不能正确进入系统。<BR><BR><B>下面简要介绍系统的启动过程：</B><BR><BR>1、电源BIOS自检程序开始运行<BR><BR>2、主引导记录被装入内存，并且程序开始执行<BR><BR>3、活动分区的引导扇区被装入内存<BR><BR>4、NTLDR从引导扇区被装入并初始化<BR><BR>5、将处理器的实模式改为32位平滑内存模式<BR><BR>6、NTLDR开始运行适当的小文件系统驱动程序（小文件系统驱动程序是建立在NTLDR内部的，它能读FAT或NTFS）<BR><BR>7、NTLDR读boot.ini文件<BR><BR>8、NTLDR装载所选操作系统<BR><BR>9、Ntdetect.com 搜索计算机硬件并将列表传送给NTLDR，以便将这些信息写进HKE Y_LOCAL_MACHINE/HARDWARE中。<BR><BR>10、然后NTLDR装载Ntoskrnl.exe，Hal.dll和系统信息集合。<BR><BR>11、Ntldr搜索系统信息集合，并装载设备驱动配置以便设备在启动时开始工作<BR><BR>12、Ntldr把控制权交给Ntoskrnl.exe，这时,启动程序结束,装载阶段开始<BR><BR><BR><BR>另外，有的电脑系统盘根目录下还会有下面的两个文件，虽然跟系统启动没有关系，在此也一并介绍吧<BR><BR><B>pagefile.sys</B><BR><BR>简单说说吧，其实这就是传说中的虚拟内存啦，可以用这个文件的空间做内存，从而弥补RAM空间的缺乏。虚拟内存管理器会选择最近没有用过的、低优先级的内存部分写到这个文件上去<BR><BR><B>hiberfil.sys</B><BR><BR>这个文件只在启用了系统休眠的电脑上可见，而且其大小与电脑的内存大小一致。<BR><BR>当电脑进入休眠状态时，内存会把自身的内容完全拷贝到这个文件里，当下一次电脑启动，内存被加电唤醒的时候，又会从这个文件里把内容调回来<BR><BR><B>如何才能显示上面的这些文件？</B><BR><BR>打开“我的电脑”——工具——文件夹选项——查看<BR><BR>勾选“显示系统文件夹的内容”<BR><BR>取消勾选“隐藏受保护的操作系统文件”<BR><BR>选择“显示所有文件和文件夹”<BR><BR><B>如果误删了这些文件，该如何修复呢？</B><BR><BR>最简单的方法，就是找另一台电脑，把那些文件完全拷贝过来<BR><BR>如果已经关机了，无法启动，先用工具光盘引导启动，然后执行上面的步骤就ok了！<BR></div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200861665337529</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200861665337529</guid>
    <pubDate>Wed, 16 Jul 2008 06:53:37 +0800</pubDate>
    <dcterms:modified>2008-07-16T06:53:37+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[用双网卡实现共享ADSL上网]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200861471759996</link>
    <description><![CDATA[<div><P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">　<SPAN lang=EN-US>"Internet</SPAN>连接共享<SPAN lang=EN-US>"</SPAN>，曾出现在<SPAN lang=EN-US>Windows 98</SPAN>（<SPAN lang=EN-US>SE</SPAN>）<SPAN lang=EN-US>/Me/2000</SPAN>的功能，现在在<SPAN lang=EN-US>Windows XP</SPAN>中得以完善和增强，它让局域网内的多台<SPAN lang=EN-US>PC</SPAN>，通过其中一台已与<SPAN lang=EN-US>Internet</SPAN>连接的<SPAN lang=EN-US>PC</SPAN>来连接<SPAN lang=EN-US>Internet</SPAN>，从而达到多台<SPAN lang=EN-US>PC</SPAN>共享一条<SPAN lang=EN-US>Internet</SPAN>连接线路上网的目的，并提供防火墙的保护。<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">　　由于实现共享上网的网络结构有很多种，不能一一列举，所以在此选取了两种典型的网络结构来介绍<SPAN lang=EN-US>Windows XP</SPAN>的<SPAN lang=EN-US>"Internet</SPAN>连接共享<SPAN lang=EN-US>"</SPAN>。<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">　　一、局域网内多于两台<SPAN lang=EN-US>PC</SPAN>，<SPAN lang=EN-US>Internet</SPAN>接入方式为宽带接入<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">　　<SPAN lang=EN-US>1</SPAN>．网络结构图如下<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">&nbsp;<A href="http://img.blog.163.com/photo/c8wczVQz-sJrGChS1fPJMA==/863002278595677348.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/c8wczVQz-sJrGChS1fPJMA==/863002278595677348.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'">　　说明：网关主机装有两个网卡，其中网卡<SPAN lang=EN-US>A1</SPAN>通过<SPAN lang=EN-US>ADSL</SPAN>、<SPAN lang=EN-US>Cable Modem</SPAN>或以太网口（多出现在宽带住宅小区、智能商业大厦和校园网）等宽带方式接入<SPAN lang=EN-US>Internet</SPAN>，网卡<SPAN lang=EN-US>A2</SPAN>跟集线器或交换机相连，与<SPAN lang=EN-US>PC1</SPAN>和<SPAN lang=EN-US>PC2</SPAN>处于同一局域网内。<SPAN lang=EN-US>PC1</SPAN>和<SPAN lang=EN-US>PC2</SPAN>各装有一个网卡跟集线器或交换机相连，在局域网内，通过共享网关主机的<SPAN lang=EN-US>Internet </SPAN>连接来上网。如果局域网内增加了<SPAN lang=EN-US>PC</SPAN>，只需把新<SPAN lang=EN-US>PC</SPAN>接到集线器或交换机就可上网。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">2</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">．网关主机的设置<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　操作系统是<SPAN lang=EN-US>Windows XP</SPAN>，<SPAN lang=EN-US>"</SPAN>开始<SPAN lang=EN-US>"-&gt;"</SPAN>控制面板<SPAN lang=EN-US>"-&gt;"</SPAN>网络和<SPAN lang=EN-US>Internet</SPAN>连接<SPAN lang=EN-US>"-&gt;"</SPAN>网络连接<SPAN lang=EN-US>"</SPAN>，就会看到两个网卡的连接图标。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/Zd3TFzY3aiDy5-fCJ0-eZw==/1758937129465324268.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Zd3TFzY3aiDy5-fCJ0-eZw==/1758937129465324268.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　<SPAN lang=EN-US>"Local Area Connection 1"</SPAN>即网卡<SPAN lang=EN-US>A1</SPAN>，与<SPAN lang=EN-US>Internet</SPAN>连接；<SPAN lang=EN-US>"Local Area Connection 2"</SPAN>即网卡<SPAN lang=EN-US>A2</SPAN>，联于局域网。<SPAN lang=EN-US>"Local Area Connection 1"</SPAN>的<SPAN lang=EN-US>TCP/IP</SPAN>设置应视不同的宽带接入方式而不同，可以是自动获取<SPAN lang=EN-US>IP</SPAN>地址和<SPAN lang=EN-US>DNS</SPAN>，也可以配固定<SPAN lang=EN-US>IP</SPAN>地址和<SPAN lang=EN-US>DNS</SPAN>（由<SPAN lang=EN-US>ISP</SPAN>提供给你的），用户应按<SPAN lang=EN-US>ISP</SPAN>提供的使用说明来配置，这里不作详述了。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　下面我们就要把这个<SPAN lang=EN-US>Internet</SPAN>连接共享出来，右击<SPAN lang=EN-US>"Local Area Connection 1"-&gt;"</SPAN>属性<SPAN lang=EN-US>"-&gt;"</SPAN>高级<SPAN lang=EN-US>"</SPAN>，把<SPAN lang=EN-US>"Internet</SPAN>连接防火墙<SPAN lang=EN-US>"</SPAN>和<SPAN lang=EN-US>"Internet</SPAN>连接共享<SPAN lang=EN-US>"</SPAN>的三项钩选，<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/xBSiSooO7a6JzNLah0cbrg==/1758937129465324271.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/xBSiSooO7a6JzNLah0cbrg==/1758937129465324271.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　按<SPAN lang=EN-US>"</SPAN>确定<SPAN lang=EN-US>"</SPAN>，此时会出现一对话框提示会改变另一网卡的<SPAN lang=EN-US>TCP/IP</SPAN>设置，按<SPAN lang=EN-US>"Yes"</SPAN>。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/LE5WkBe8LPUudzXCwp1BBQ==/5116089176693412074.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/LE5WkBe8LPUudzXCwp1BBQ==/5116089176693412074.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　这样共享就启用，网卡图标变成这个样子。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"><SPAN lang=EN-US><A href="http://img.blog.163.com/photo/xqce34qhcbktwTOuwAysdw==/1758937129465324257.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/xqce34qhcbktwTOuwAysdw==/1758937129465324257.jpg"></A></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　现在我们查看<SPAN lang=EN-US>"Local Area Connection 2"</SPAN>的<SPAN lang=EN-US>TCP/IP</SPAN>设置，右击<SPAN lang=EN-US>"Local Area Connection 2"-&gt;"</SPAN>属性<SPAN lang=EN-US>"-&gt;"Internet Protocol (TCP/IP)"-&gt;"</SPAN>属性<SPAN lang=EN-US>"</SPAN>，看到<SPAN lang=EN-US>IP</SPAN>地址被系统设置为<SPAN lang=EN-US>192.168.0.1</SPAN>。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/Ar1zw1b9COG9DgIgWfoyZw==/1758937129465324251.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Ar1zw1b9COG9DgIgWfoyZw==/1758937129465324251.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　这个<SPAN lang=EN-US>IP</SPAN>地址是可改变的，根据本局域网的使用者的具体要求而定了，但在本例中我们不作修改，按取消退出此对话框。网关主机的设置完成，已经共享了<SPAN lang=EN-US>Internet</SPAN>连接并有防火墙功能，可保护整个局域网内的所有机器不被非法访问。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　<SPAN lang=EN-US>3</SPAN>．局域网内<SPAN lang=EN-US>PC1</SPAN>的配置<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　操作系统可以是任何网络操作系统，除了<SPAN lang=EN-US>Windows</SPAN>系列，还可以是<SPAN lang=EN-US>Linux</SPAN>或<SPAN lang=EN-US>Unix</SPAN>。只要设置网卡的<SPAN lang=EN-US>IP</SPAN>地址、子网掩码、默认网关和<SPAN lang=EN-US>DNS</SPAN>。<SPAN lang=EN-US>IP</SPAN>地址设为与网关主机网卡<SPAN lang=EN-US>A2</SPAN>处于同一子网的地址，但不能重复，子网掩码跟网关主机网卡<SPAN lang=EN-US>A2</SPAN>的一样，默认网关和<SPAN lang=EN-US>DNS</SPAN>设为网关主机的网卡<SPAN lang=EN-US>A2</SPAN>的<SPAN lang=EN-US>IP</SPAN>地址。如果是<SPAN lang=EN-US>Windows XP</SPAN>系统，可按下图设置。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/a-KlzFdRZhO7gImT3LQfCw==/1758937129465324254.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/a-KlzFdRZhO7gImT3LQfCw==/1758937129465324254.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　确定后，打开<SPAN lang=EN-US>IE</SPAN>就可以上网了，当然前提是网关主机已经连接上<SPAN lang=EN-US>Internet</SPAN>。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">4</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">．局域网内<SPAN lang=EN-US>PC2</SPAN>的配置<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　<SPAN lang=EN-US>PC2</SPAN>的设置跟<SPAN lang=EN-US>PC1</SPAN>基本相同，只是<SPAN lang=EN-US>IP</SPAN>地址不同，如上例<SPAN lang=EN-US>PC1</SPAN>的<SPAN lang=EN-US>IP</SPAN>地址是<SPAN lang=EN-US>192.168.0.2</SPAN>，那么<SPAN lang=EN-US>PC2</SPAN>的<SPAN lang=EN-US>IP</SPAN>地址就可以设为<SPAN lang=EN-US>192.168.0.3</SPAN>，只要是本子网内没用过的<SPAN lang=EN-US>IP</SPAN>地址就行了。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　<SPAN lang=EN-US>5</SPAN>．网关主机内的防火墙设置<SPAN lang=EN-US></SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　假如网关主机开启了远程桌面（《<SPAN lang=EN-US>Windows XP</SPAN>远程体验》中介绍过）的功能，同时又开启了防火墙，<SPAN lang=EN-US>Internet</SPAN>上的其他在线用户是不能远程登录你的系统的，但如果你希望一位专家远程登录到本局域网内的任何一台<SPAN lang=EN-US>PC</SPAN>（包括网关主机，这台<SPAN lang=EN-US>PC</SPAN>要具备远程桌面的功能），帮自己解决难题呢，那就按以下操作吧：（以刚才的网关主机为例子说明）右击<SPAN lang=EN-US>"Local Area Connection 1"-&gt;"</SPAN>属性<SPAN lang=EN-US>"-&gt;"</SPAN>高级<SPAN lang=EN-US>"-&gt;"</SPAN>设置<SPAN lang=EN-US>"</SPAN>，钩选<SPAN lang=EN-US>"</SPAN>远程桌面<SPAN lang=EN-US>"</SPAN>，<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/esnX_NEZZk8ssGx9T4RFIQ==/1758937129465324277.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/esnX_NEZZk8ssGx9T4RFIQ==/1758937129465324277.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　输入要被专家登陆的机器的<SPAN lang=EN-US>IP</SPAN>地址或计算机名，按三次<SPAN lang=EN-US>"</SPAN>确定<SPAN lang=EN-US>"</SPAN>完成，专家就可透过防火墙登陆到本局域网内的任何一台<SPAN lang=EN-US>PC</SPAN>。<SPAN lang=EN-US> </SPAN></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial"></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;<A href="http://img.blog.163.com/photo/fJbiWTxo6hqVeDoa-MOp9A==/1758937129465324274.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/fJbiWTxo6hqVeDoa-MOp9A==/1758937129465324274.jpg"></A></SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">&nbsp;</SPAN></P>
<P style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: Arial">　　同样的方法，可以控制局域网的<SPAN lang=EN-US>Web</SPAN>服务或<SPAN lang=EN-US>FTP</SPAN>服务等是否可以对外开放，只要像刚才那样钩选不同的服务即可。<SPAN lang=EN-US></SPAN></SPAN></P></div>]]></description>
	    <author><![CDATA[鑫海]]></author>
	    <comments>http://lingdushanke.blog.163.com/blog/static/451108200861471759996</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://lingdushanke.blog.163.com/blog/static/451108200861471759996</guid>
    <pubDate>Mon, 14 Jul 2008 07:17:59 +0800</pubDate>
    <dcterms:modified>2008-07-14T08:16:42+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[引用 扩展使用.INF文件－制作免安装的绿色软件]]></title>	
    <link>http://lingdushanke.blog.163.com/blog/static/451108200842874842634</link>
    <description><![CDATA[<div><P><EM>引用</EM></P>
<BLOCKQUOTE><A href="http://blog.163.com/qwxmhp@126/" target=_blank>叉烧猫</A> 的 <A href="http://blog.163.com/qwxmhp@126/blog/static/286754722007112122912213" target=_blank>扩展使用.INF文件－制作免安装的绿色软件</A><BR>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">10</P>
<P style="TEXT-INDENT: 2em">推荐</A></P>
<P style="TEXT-INDENT: 2em">EmEditor的绿化</P>
<P style="TEXT-INDENT: 2em">下载EmEditor的安装文件emed404epx.exe后，发现用WinRAR可以打开，解压后，运行EmEditor，发现丢失了预定义的多种文本格式的语法配置，看来这样做不行，只好采用系统快照的方法了。请随我一步步进行，步骤如下：</P>
<P style="TEXT-INDENT: 2em">1 扫描系统，制订系统快照。这里我仅仅记录当前系统的注册表（因为我认为EmEditor不会向系统目录拷贝文件，如果判断错误，就会导致“绿化”失败），运行ART（Advanced Registery Tracer），扫描一遍注册表。如图EmEditor_snap.PNG，不要关闭ART。</P>
<P style="TEXT-INDENT: 2em">2 安装EmEditor。随便安装到哪里，反正一会就卸载。安装好后，如果需要的话，更改配置，或者配置新的文件类型，例如我就增加了NFO文件类型，设定和NFO文件相关联的字符集，这样可以用EmEditor直接察看NFO文件，不需要专门的察看工具了。</P>
<P style="TEXT-INDENT: 2em">3 记录系统变化。再一次扫描系统，给系统作快照，从ART里面再一次扫描注册表，然后选择菜单命令Registry-〉compare here或者直接用键盘F10，比较结果如图EmEditor_compare.png，点击图中那个save to redo file的按钮，存储为EmEditor.reg文件，关闭ART。</P>
<P style="TEXT-INDENT: 2em">4 复制并卸载。复制安装好的EmEditor目录到其他路径，然后卸载EmEditor程序。</P>
<P style="TEXT-INDENT: 2em">5 分析。打开刚刚导出的EmEditor.reg文件，这是一个巨大的reg文件，单单是REG文件就有1兆多，不过不用担心。阅读注册表后，删除和EmEditor无关的注册表项后，如仅仅和资源管理器相关的注册表部分，发现剩下的注册表文件可以分成3个部分。一部分在位于注册表的这个路径[HKEY_LOCAL_MACHINE\SOFTWARE\EmSoft]，里面大部分不涉及路径，只有一项记录了EmEditor的路径，就是"ModulePath"="h:\\EmEditor4\\"；还有一大部分在注册表的这个路径下面[HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3]，里面有很多项都涉及了EmEditor的路径，如"Tmpl"="h:\\EmEditor4\\template.xml"；还有就是和EmEditor和txt文件后缀向关联的注册表设置，把EmEditor设置为IE中缺省的源代码察看工具的注册表设置以及注册COM组件EMEDSHL.DLL的注册表部分（和InProcServer32相关的就是）。</P>
<P style="TEXT-INDENT: 2em">6 “绿化”。</P>
<P style="TEXT-INDENT: 2em">6.1 把位于注册表路径路径[HKEY_LOCAL_MACHINE\SOFTWARE\EmSoft]的内容存储到EmEditor_HKLM.reg文件中，把位于注册表路径[HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3]的内容存储到EmEditor_HKCU.reg文件中，把剩下的内容首先除掉COM组件EMEDSHL.DLL的相关部分，然后存储到EmEditor_assoc.reg文件中。</P>
<P style="TEXT-INDENT: 2em">6.2 把EmEditor_HKLM.reg文件和EmEditor_HKCU.reg文件中涉及到路径的注册表内容抽取出来，存储到EmEditorConf.reg文件。</P>
<P style="TEXT-INDENT: 2em">6.3 </P>
<P style="TEXT-INDENT: 2em">绿色软件的制作，其中核心的一点就是获得原来软件的安装程序所做出的注册表的改变，然后把该变化导出为一个注册表文件.REG来进一步分析。如果导出的.REG文件不包括绝对路径，那么可以把该注册表文件和提取出的软件打包在一起做成绿色软件。如果导出的.REG文件中包含当前软件的绝对安装路径，那么就必须每次都要手工修改注册表中路径，是很麻烦的，降低了做成绿色软件的意义所在。而使用.INF文件，使用AddReg命令可以轻松容易的解决这个注册表路径的难题。</P>
<P style="TEXT-INDENT: 2em">把EmEditor_assoc.reg文件和EmEditorConf.reg文件用INF的语法转换为INF文件，或者用一个免费小工具reg2inf.exe自动转换，然后把转换得到的EmEditor_assoc.inf文件和EmEditorConf.inf文件中的路径h:\EmEditor4全部用%01%代替。下面是EmEditorConf.inf文件的内容：</P>
<P style="TEXT-INDENT: 2em">[Version]</P>
<P style="TEXT-INDENT: 2em">Signature="$CHICAGO$"</P>
<P style="TEXT-INDENT: 2em">[DefaultInstall]</P>
<P style="TEXT-INDENT: 2em">AddReg=EmEditorConf_AddReg</P>
<P style="TEXT-INDENT: 2em">hklm,"SOFTWARE\EmSoft\EmEditor v3\Common","ModulePath",,"%01%\"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\C++","Tmpl",,"%01%\template.cpp"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\CSS","Tmpl",,"%01%\template.css"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\HTML","Tmpl",,"%01%\template.htm"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\Java","Tmpl",,"%01%\template.java"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\javascript","Tmpl",,"%01%\template.js"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\JSP","Tmpl",,"%01%\template.jsp"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\Perl","Tmpl",,"%01%\template.pl"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\PHP","Tmpl",,"%01%\template.php"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\Python","Tmpl",,"%01%\template.py"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\Ruby","Tmpl",,"%01%\template.rb"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\TeX","Tmpl",,"%01%\template.tex"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\VBScript","Tmpl",,"%01%\template.vbs"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\VBScript for EmEditor","Tmpl",,"%01%\template.vbee"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\Windows Script","Tmpl",,"%01%\template.wsf"</P>
<P style="TEXT-INDENT: 2em">hkcu,"Software\EmSoft\EmEditor v3\Config\XML","Tmpl",,"%01%\template.xml"</P>
<P style="TEXT-INDENT: 2em">6.4 写一个批处理文件install.bat，内容如下：</P>
<P style="TEXT-INDENT: 2em">regedit EmEditor_HKLM.reg</P>
<P style="TEXT-INDENT: 2em">regedit EmEditor_HKCU.reg</P>
<P style="TEXT-INDENT: 2em">RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 .\EmEditorConf.inf</P>
<P style="TEXT-INDENT: 2em">regsvr32 EMEDSHL.DLL</P>
<P style="TEXT-INDENT: 2em">RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 .\EmEditor_assoc.inf</P>
<P style="TEXT-INDENT: 2em">6.5 把install.bat，EmEditorConf.inf，EmEditor_assoc.inf，EmEditor_HKLM.reg，EmEditor_HKCU.reg5个文件存储到EmEditor的目录，删除其余的注册表文件。</P>
<P style="TEXT-INDENT: 2em">6.6 根据安装步骤和install.bat，写出相应的卸载的批处理文件，这个比较简单。</P>
<P style="TEXT-INDENT: 2em">经过测试后，EmEditor工作正常，也可以注释掉install.bat的最后2行语句，这样EmEditor就不会和系统关联，上面的步骤是在windows 2000上的，对于win9x也同样，而且win9x下面的EmEditor的配置文件和windows 2000的一样，仅仅是程序的版本不同。</P>
<P style="TEXT-INDENT: 2em">把制作好的绿色的EmEditor拷贝到U盘上，需要用的时候，直接执行里面的install.bat文件就可以了（注意，要在EmEditor的目录运行批处理文件），不需要任何文件拷贝。</P>
<P style="TEXT-INDENT: 2em">.INF文件是什么</P>
<P style="TEXT-INDENT: 2em">.INF是 Device Information File 的缩写，是微软公司为供硬件设备制造商发布其设备驱动程序而发展的———许多硬件设备的驱动程序都是使用 .INF文件来安装的。.INF文件从 Windows3.X 时代就开始大量被使用了。 　</P>
<P style="TEXT-INDENT: 2em">.INF文件是一种具有特定格式的纯文本文件，我们可说它是一种安装脚本（SetupScript）。虽然 .INF 只是纯文本文件，但是当我们在文件管理器explorer对 .INF文件按鼠标右键後，如图inf右键.PNG，在右键菜单上就会出现“安装I”命令，这是因为微软公司已在其操作系统 Windows 中内置提供了 Setup API（可以解释.INF脚本文件），我们只需用文本编辑软件编写 .INF文件，便可完成大部份的安装工作，所以尤其是在软体的大小并不是很大的情况下，安装工作不是很复杂的时候，使用 .INF文件来进行安装工作将会是一个好选择。而且如果要安装设备驱动程序，.INF文件是目前唯一的选择。 可以用 .INF文件创建包括注册表条目和目的目录的自定义软件安装指令。.INF文件可以提供有限的平台独立性，并指定有限的软件依赖性。目前.INF文件最普遍的应用是为安装硬件设备的驱动程序服务的，本文的目的就是介绍 .INF文件的功能、结构、并提供了几个 事例来说明如何用.INF文件，如何扩展.INF文件的用途，比如制作绿色软件，仅供参考。</P>
<P style="TEXT-INDENT: 2em">下面首先给出一个驱动程序的.INF文件的例子，如图usbinfpng.png，是我从Windows2000中抽取出来的用于Win98se的USB存储设备驱动的usbstor.INF文件，删除了大部分内容，紧紧保留了一个基本的.INF文件的框架。</P>
<P style="TEXT-INDENT: 2em">.INF文件的格式</P>
<P style="TEXT-INDENT: 2em">在图usbinfpng.png中，可以看到.INF文件是由许多节（Section）组成，与.INI文件类似，整个.INF文件由几个节组成，节名用方括号扩起来，如version 节，Manufacturer节，和Strings节等等。而每个节又由一系列的条目组成，每个条目都是是由一个键（Key）与一个值（Value）组成，都是“Key=Value”这样的形式，在这些节中定义的项目可以完成硬件的自动检测和软件（包括驱动程序）的安装。.INF文件中分号后面的字符串是注释。在一个 .INF文件中，所有跟随在分号（;）后的文字都会被视为注释。注释并不一定要在新行开始，可以在一行文字後面加入注释。</P>
<P style="TEXT-INDENT: 2em">.INF文件案格式和作用如下所示：</P>
<P style="TEXT-INDENT: 2em">[Version] 节： 包含对此 .INF文件的简短描述与此 .INF文件支持的设备类型的信息。用于确认 .INF文件的基本版本信息。任何.INF文件都必须 包括这个节。</P>
<P style="TEXT-INDENT: 2em">在图usbinfpng.png中，[Version] 节中的语句 Signature="$CHICAGO$"表明这个.INF文件可以用于windows 95以后的所有平台上，目前来说就是win98，winme，winnt4，win2k，winxp，win2k3。这种.INF文件比较多见。如果[Version]节中的签名条目是 Signature="$Windows 95$"，表明这个.INF文件可以用于windows 95以后的Win9x平台上，目前来说就是win98，winme。 如果[Version]节中的签名条目是 Signature="$WINDOWS NT$"，表明这个.INF文件可以用于WindowsNT系列的平台上，包括winnt4，win2k，winxp，win2k3。WIN9x系列的操作系统的SetupAPI将会拒绝执行这种类型的.INF文件。</P>
<P style="TEXT-INDENT: 2em">[Manufacturer] 与 [Manufacturer Name] 节： 列出此 .INF文件可辨识的所有硬件设备，并列出了开发该硬件的厂商名称，主要用于硬件设备的安装。在设备驱动程序的.INF文件中必须包括[Manufacturer]节与 [Manufacturer Name] 节。对应到图usbinfpng.png中就是[Manufacturer]节和[Microsoft]节，安装新硬件的向导中列出来的厂商名字和设备名称就是来自这两个节。这行语句“%MfgName%=Microsoft” 的等号右边的名字指明设备制造商是Microsoft，等号左边是厂商的名字，图中的厂商名称是"Microsoft"（在后面讲到的[Strings]节中）。在一个.INF文件中可以有多个设备制造商的名字，都必须放在[Manufacturer]节中，同时[Manufacturer Name] 节可以列出该厂商的多种设备。 [Manufacturer Name] 节区含有对要安装的设备的描述，并为要安装的设备指出 [Install] 节区。 [Manufacturer Name]节语法：</P>
<P style="TEXT-INDENT: 2em">[manufacturer-name]</P>
<P style="TEXT-INDENT: 2em">device-description=install-section-name,device-id[,compatible-device-id]...</P>
<P style="TEXT-INDENT: 2em">device-description就是对要安装的设备的描述。install-section-name就是此设备的 [Install] 节区名称，manufacturer-name 节区名称必须已在 [Manufacturer] 节区中被定义。device-id是此设备的硬件标志符，每个厂家的不同的硬件对应着不同的设备标志符。</P>
<P style="TEXT-INDENT: 2em">对应到图usbinfpng.png中，就是这行语句“%GenericBulkOnly.DeviceDesc%=USBSTOR_BULK, USB\Class_08&amp;SubClass_02&amp;Prot_50”等号左边是设备的描述，也就是设备名字是"USB Mass Storage Device"，而等号右边的USB\Class_08&amp;SubClass_02&amp;Prot_50是设备标志符，这个标志符是对应到一类的硬件设备，就是USB存储设备，操作系统检测到USB存储设备，安装相应的驱动的时候，就会从设备驱动的安装节即[USBSTOR_BULK]节开始安装驱动。可以看出来此.INF文件可以用于通用的USB存储设备"USB Mass Storage Device"的驱动程序的安装。</P>
<P style="TEXT-INDENT: 2em">普通的安装软件的.INF文件中，不包括[Manufacturer] 与 [Manufacturer Name] 节，即使包含，也不会执行它们，这2个节仅仅用于硬件的设备驱动中起作用。</P>
<P style="TEXT-INDENT: 2em">[Install] 节： 描述设备驱动程序与硬件设备的实际属性。它也定义了所有 [Install] 节的名称，在此定义的节中包含了安装该设备的信息和命令。默认情况下，会执行 [DefaultInstall] 节，在图inf右键.PNG中，Install操作就会执行[DefaultInstall] 节。[DefaultInstall] 节中包含指向其他节的指针，该节可用于指定要复制和删除的文件、注册表的更新、.INF文件的更新等。</P>
<P style="TEXT-INDENT: 2em">对应到图usbinfpng.png中，[Install] 节就是[USBSTOR_BULK]节，其中要执行复制文件CopyFiles和添加注册表项目AddReg2种操作。</P>
<P style="TEXT-INDENT: 2em">如果是安装普通的软件的.INF文件，可以通过鼠标右键菜单上的“安装”命令来安装（图inf右键.PNG），这个时候.INF文件必须包括[DefaultInstall]节，也可以包括其他的[Install]节，用RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection [Install]节的名字，这样类似的命令来安装。</P>
<P style="TEXT-INDENT: 2em">[Install]节的语法：</P>
<P style="TEXT-INDENT: 2em">[install-section-name]</P>
<P style="TEXT-INDENT: 2em">Copyfiles=file-list-section[,file-list-section]...</P>
<P style="TEXT-INDENT: 2em">LogConfig=log-config-section-name</P>
<P style="TEXT-INDENT: 2em">Renfiles=file-list-section[,file-list-section]...</P>
<P style="TEXT-INDENT: 2em">Delfiles=file-list-section[,file-list-section]...</P>
<P style="TEXT-INDENT: 2em">UpdateInis=update-ini-section[,update-ini-section]...</P>
<P style="TEXT-INDENT: 2em">UpdateIniFields=update-inifields-section[,update-inifields-section]...</P>
<P style="TEXT-INDENT: 2em">AddReg=add-registry-section[,add-registry-section]...</P>
<P style="TEXT-INDENT: 2em">DelReg=del-registry-section[,del-registry-section]...</P>
<P style="TEXT-INDENT: 2em">Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...</P>
<P style="TEXT-INDENT: 2em">UpdateCfgSys=update-config-section</P>
<P style="TEXT-INDENT: 2em">UpdateAutoBat=update-autoexec-section</P>
<P style="TEXT-INDENT: 2em">[Install] 节定义了安装程式与硬体驱动需要的资源，以便安装新的驱动程式或者软件。此节中每个条目都有其特定格式与意义，并非每个条目都是必要的。无论是安装驱动程序还是普通的软件，最后都要从某一个[Install] 节开始执行。 </P>
<P style="TEXT-INDENT: 2em">[DestinationDirs] 节： 指定硬盘上复制、删除或重命名节文件的位置（例如 \Windows 或 Windows\System）。 .INF文件通过[DestinationDirs]节来指定操作的目标路径，语法如下：</P>
<P style="TEXT-INDENT: 2em">[DestinationDirs] </P>
<P style="TEXT-INDENT: 2em">file-list-section =ldid[, subdir ] </P>
<P style="TEXT-INDENT: 2em">DefaultDestDir=ldid[, subdir ]</P>
<P style="TEXT-INDENT: 2em">[DestinationDirs] 节定义了 [file-list-section] 节中指定的操作（可以是 CopyFiles、RenFiles 或 DelFiles 节）的目标目录。DefaultDestDir命令可以为 .INF文件中的任何没有明确在[DestinationDirs]节中命名的CopyFiles、RenFiles或DelFiles节指定默认目标文件夹。</P>
<P style="TEXT-INDENT: 2em">在.INF文件中，使用逻辑磁盘标识符 (LDID) 来表示路径，如下表：</P>
<P style="TEXT-INDENT: 2em">00 Null LDID - 可用于创建新的 LDID </P>
<P style="TEXT-INDENT: 2em">01 Source Drive:\pathname </P>
<P style="TEXT-INDENT: 2em">10 Windows 文件夹（等价于%windir%目录 ） </P>
<P style="TEXT-INDENT: 2em">11 System 文件夹 </P>
<P style="TEXT-INDENT: 2em">12 IOSubsys 文件夹 </P>
<P style="TEXT-INDENT: 2em">13 Command 文件夹 </P>
<P style="TEXT-INDENT: 2em">17 Inf 文件夹 </P>
<P style="TEXT-INDENT: 2em">18 Help 文件夹 </P>
<P style="TEXT-INDENT: 2em">20 Fonts </P>
<P style="TEXT-INDENT: 2em">21 Viewers </P>
<P style="TEXT-INDENT: 2em">22 VMM32 </P>
<P style="TEXT-INDENT: 2em">23 Color 文件夹 </P>
<P style="TEXT-INDENT: 2em">24 包含 Windows 文件夹的驱动器根目录 </P>
<P style="TEXT-INDENT: 2em">28 Host Winboot </P>
<P style="TEXT-INDENT: 2em">30 启动盘的根文件夹 </P>
<P style="TEXT-INDENT: 2em">31 虚拟启动盘的主驱动器根文件夹 </P>
<P style="TEXT-INDENT: 2em">如图usbinfpng.png中，这行语句“USBSTOR.CopyList = 10, system32\drivers”表明USBSTOR.CopyList这个文件列表中文件的目标路径是%windir%\system32\drivers，其中10代表Windows所在的文件夹