Windows2000/XP启动过程详解
 
  
Windows2000/XP是一个优秀的操作系统,它功能强大,安全稳定,深受广大电脑用户青睐。但在使用过程中,我们明显地感觉到它的启动时间比Windows98要延长许多,比之Windows98更能考验人的耐性。那么在这段让人忍无可忍但又不可不忍的时间中,系统究竟做了些什么工作哪,别急,,容俺慢慢道来,咱看一看它究竟为何如此龟速。
     在基于INTEL的计算机上,Windows2000/XP的启动过程大致可分为5个步骤:预启动,启动,装载内核,初始化内核以及用户登录。下面分别展开介绍:
     一.预启动
     首先计算机通电进行自检,并由BIOS(即基本输入输出系统)完成基本硬件配置,然后读取硬盘的MBR(主引导记录)检查硬盘分区表以确定引导分区,并将引导分区上的操作系统引导扇区调入内存中执行,此处即执行NTLDR(操作系统加载器)文件。
          * Windows2000/XP支持多重启动。它在安装时会首先将已存在的其它操作系统引导扇区保存为BOOTSECT.DOS文件(位于活动分区根目录下),并修改系统引导扇区,以便系统启动时加载NTLDR文件,从而达到多重启动的目的。而Windows98则不具备这个功能,因此如果先装好Windows2000/XP后再装Windows98会破坏掉Windows2000/XP的引导记录,导致2000/XP不能启动。
     二.启动
          1.首先进行出始化,NTLDR会把处理器从实模式转换为32位保护模式。
          2.读取BOOT.INI文件。该文件位于活动分区根目录下,它的作用是使系统在启动过程中出现选择菜单,由用户选择希望启动的操作系统。如果选择启动Windows2000/XP,NTLDR会继续引导进行以下过程;如果选择为非Windows2000/XP系统,NTLDR则会读取系统引导扇区副本BOTSECT.DOS转入启动相应系统。
          * 其中[BOOT LOADER]即操作系统加载器,指定系统选择菜单默认等待时间和默认引导的操作系统。可手工修改或在控制面板中修改,为了保险起见,建议在控制面板中修改。依次选择控制面板-〉系统-〉高级->启动和故障恢复,即可更改相关设置。(在WindowsXP中还有另一种方法,即运行msconfig(系统配置实用程序)。
            [OPERATING SYSTEMS]段指定操作系统列表,由双引号括起来的部分就是列表所显示的内容,可任意修改,使其更加个性化。
          * 形如MULTI(0)DISK(0)RDISK(0)PARTITION(1)格式的语句被称为ARC路径,它的格式为:MULTI()——指定磁盘控制器(若为SCSI控制器,则此处应替换为SCSI());DISK()——指定SCSI设备编号(对于MULTI该处值始终为0);RDISK()——指定IDE设备编号(对于SCSI,此处被忽略);PARTITION()——指定分区编号。除分区编号由1开始外,其余编号均从0开始。
            参数/FASTDETECT表示禁用串行鼠标检测,是系统默认值。还有几个常见参数:MAXMEM——指定Windows2000/XP可用内存容量;BASEVIDEO——使用标准VGA显示驱动程序;NOGUIBOOT——启动过程中不显示图形屏幕;SOS——加载设备驱动程序时显示其名称。
          * 在操作系统选择菜单中的中文字体由位于活动分区根目录下的BOOTFONT.BIN文件提供。
          3.系统加载NTDETECT.COM文件。由它来检测机器硬件,如并行端口,显示适配器等等,并将收集到的硬件列表返回NTLDR用于以后在注册表中注册保存。
          4.如果Windows2000/XP有多个硬件配置文件,此时会出现选择菜单,等待用户确定要使用的硬件配置文件,否则直接跳过此步,启用默认配置。
          * 硬件配置文件是指保存计算机特定硬件配置的系统文件。可以创建多个不同的硬件配置文件以满足计算机在不同场合的应用。可以依次选择控制面板-〉系统->硬件-〉硬件配置文件作出修改。
     三.装载内核
          引导过程开始装载Windows2000/XP内核NTOSKRNL.EXE。这个文件位于Windows2000/XP安装文件夹下的SYSTEM32文件夹中。随后,硬件抽象层(HAL)被引导进程加载,完成本步骤。
          * 硬件抽象层(HAL):隐藏特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。
     四.初始化内核
          内核完成初始化,NTLDR将控制权转交Windows2000/XP内核,后者开始装载并初始化设备驱动程序,以及启动WIN32子系统和WINDOWS2000/XP服务。
     五.用户登录
          开始登录进程。由WIN32子系统启动WINLOGON.EXE,并由它启动LOCAL SECURITY AUTHORITY(LSASS.EXE)显示登录对话框。用户登录后,WINDOWS2000/XP会继续配置网络设备和用户环境。最后,伴随着微软之声和我们熟悉的个性化桌面,WINDOWS2000/XP漫长的启动过程终于完成。呵,是不是睡着了,醒醒吧,系统启动成功,您现在该干嘛就干嘛!
 
SFC使用方法  
  SFC(System Files Checker,系统文件检查器)。以管理员身份登录Windows XP,将Windows XP的安装光盘放入光驱,在“命令提示符”窗口中键入“SFC/SCANNOW”命令后回车,“系统文件检查器”开始自动扫描系统文件,而且不需要你的任何干预。不过需要提醒大家的是,尽管Windows 2000/XP下的“SFC”比Windows 98下的“SFC”聪明得多,但要想正常运行它,还得注意以下两个问题:
  1.在运行“SFC”之前必须将Windows XP安装光盘放入光驱,否则在扫描过程中会提示你插入安装光盘。即使你插入了安装光盘,系统仍会有出错提示。
  2.在Windows 2000/XP下使用“系统文件检查器”时,必须加上正确的参数才能正常运行。我们可以在“命令提示符”窗口中键入“SFC”命令查看这些参数。
  3.由于Windows 2000/XP下的“SFC”命令是完全自动执行的,因此我们无法直接知道修复了哪些系统文件。不过我们可以通过以下方法间接获得系统文件的修复情况:依次打开“控制面板→管理工具→事件查看器→系统”,根据时间提示,从列表中选定运行“SFC”时的事件,右击该事件并查看其属性即可。
 
RUNDLL32.EXE 是什么程序
    Rundll32.exe是什么?顾名思意,“执行32位的DLL文件”。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。如果看到系统中有多个Rundll32.exe,不必惊慌,这证明用Rundll32.exe启动了多少个的DLL文件。当然,这些Rundll32.exe执行的DLL文件是什么,我们都可以从系统自动加载的地方找到。
    现在,我来介绍一下Rundll32.exe这个文件,意思上边已经说过,功能就是以命令行的方式调用动态链接程序库。系统中还有一个Rundll.exe文件,他的意思是“执行16位的DLL文件”,这里要注意一下。在来看看Rundll32.exe使用的函数原型:
    Void CALLBACK FunctionName (
    HWND hwnd,
    HINSTANCE hinst,
    LPTSTR lpCmdLine,
    Int nCmdShow
    );
    其命令行下的使用方法为:Rundll32.exe DLLname,Functionname [Arguments]
    DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。
略谈Rundll32.exe的作用  (我是菜鸟)    
   
    常用Windows9x的朋友一定对Rundll32.exe和Rundll.exe这两个档案不会陌生吧,不过,由於这两个程式的功能原先只限於在微软内部使用,因而真正知道如何使用它们的朋友想必不多。那么好,如果你还不清楚的话,那么就让我来告诉你吧。
    首先,请你做个小实验(请事先保存好你正在执行的程式的结果,否则...):点击“开始-程式-Ms-Dos方式”,进入Dos视窗,然後键入rundll32.exe user.exe,restartwindows,再按下回车键,这时你将看到,机器被重启了!怎么样,是不是很有趣?
     当然,Rundll的功能绝不仅仅是重启你的机器。其实,Rundll者,顾名思义,执行Dll也,它的功能就是以命令列的方式呼叫Windows的动态链结库,Rundll32.exe与Rundll.exe的区别就在於前者是呼叫32位的链结库,而後者是运用於16位的链结库,它们的命令格式是:
     RUNDLL.EXE ,,
     这里要注意三点:1.Dll档案名中不能含有空格,比如该档案位於c:\ProgramFiles\目录,你要把这个路径改成c:\Progra~1\;2.Dll档案名与Dll入口点间的逗号不能少,否则程式将出错并且不会给出任何资讯!3.这是最重要的一点:Rundll不能用来呼叫含返回值参数的Dll,例如Win32API中的GetUserName(),GetTextFace()等。在Visual Basic中,提供了一条执行外部程式的指令Shell,格式为:
     Shell “命令列”
     如果能配合Rundll32.exe用好Shell指令,会使您的VB程式拥有用其他方法难以甚至无法实现的效果:仍以重启为例,传统的方法需要你在VB工程中先建立一个模组,然後写入WinAPI的声明,最後才能在程式中呼叫。而现在只需一句:
     Shell “rundll32.exe user.exe,restartwindows”就搞定了!是不是方便多了?
     实际上,Rundll32.exe在呼叫各种Windows控制面板和系统选项方面有著独特的优势。下面,我就将本人在因特网上收集的有关Rundll的指令列举如下(很有用的,能省去你很多呼叫Windows  API的时间!!),供大家在程式设计中引用:
     命令列: rundll32.exe shell32.dll,Control_RunDLL
     功能: 显示控制面板
     命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
     功能: 显示“控制面板-辅助选项-键盘”选项视窗
     命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
     功能: 显示“控制面板-辅助选项-声音”选项视窗
     命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
     功能: 显示“控制面板-辅助选项-显示”选项视窗
     命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
     功能: 显示“控制面板-辅助选项-滑鼠”选项视窗
     命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
     功能: 显示“控制面板-辅助选项-传统”选项视窗
     命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
     功能: 执行“控制面板-添加新硬体”向导。
     命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
     功能: 执行“控制面板-添加新印表机”向导。
     命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
     功能: 显示 “控制面板-添加/删除程式-安装/卸载” 面板。
     命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
     功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。
     命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
     功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。
     命令列: rundll32.exe syncui.dll,Briefcase_Create
     功能: 在桌面上建立一个新的“我的公文包”。
     命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
     功能: 显示复制软碟视窗
     命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
     功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
     命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
     功能: 显示“日期与时间”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
     功能: 显示“时区”选项视窗。
     命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
     功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。
     命令列: rundll32.exe rnaui.dll,RnaWizard
     功能: 显示“新建拨号连接”向导的视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
     功能: 显示“显示属性-背景”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
     功能: 显示“显示属性-萤屏保护”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
     功能: 显示“显示属性-外观”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
     功能: 显示显示“显示属性-属性”选项视窗。
     命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
     功能: 显示Windows的“字体”档案夹。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
     功能: 同样是显示Windows的“字体”档案夹。
     命令列: rundll32.exe shell32.dll,SHformatDrive
     功能: 显示格式化软碟对话框。
     命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
     功能: 显示“控制面板-游戏控制器-一般”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
     功能: 显示“控制面板-游戏控制器-进阶”选项视窗。
     命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
     功能: 列印HTML文档。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
     功能: 显示Microsoft Exchange一般选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
     功能: 显示“控制面板-滑鼠” 选项 。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
     功能: 显示 “控制面板-键盘属性-速度”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
     功能: 显示 “控制面板-键盘属性-语言”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
     功能: 显示Windows“印表机”档案夹。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
     功能: 显示Windows“字体”档案夹。
     命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
     功能: 显示“控制面板-输入法属性-输入法”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
     功能: 执行“添加新调制解调器”向导。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
     功能: 显示“控制面板-多媒体属性-音频”属性页。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
     功能: 显示“控制面板-多媒体属性-视频”属性页。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
     功能: 显示“控制面板-多媒体属性-MIDI”属性页。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
     功能: 显示“控制面板-多媒体属性-CD音乐”属性页。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
     功能: 显示“控制面板-多媒体属性-设备”属性页。
     命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
     功能: 显示“控制面板-声音”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
     功能: 显示“控制面板-网路”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
     功能: 显示ODBC32资料管理选项视窗。
     命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:\path\filename}
     功能: 显示指定档案(drive:\path\filename)的“打开方式”对话框。
     命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
     功能: 显示“控制面板-密码”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
     功能: 显示“控制面板-电源管理属性”选项视窗。
     命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL  PrintersFolder
     功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL  main.cpl @2)
     命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
     功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
     功能: 显示“控制面板-区域设置属性-数字”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
     功能: 显示“控制面板-区域设置属性-货币”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
     功能: 显示“控制面板-区域设置属性-时间”选项视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
     功能: 显示“控制面板-区域设置属性-日期”选项视窗。
     命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]
     功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
     功能: 显示“控制面板-系统属性-传统”属性视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
     功能: 显示“控制面板-系统属性-设备管理器”属性视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
     功能: 显示“控制面板-系统属性-硬体配置档案”属性视窗。
     命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
     功能: 显示“控制面板-系统属性-性能”属性视窗。
     命令列: rundll32.exe user.exe,restartwindows
     功能: 强行关闭所有程式并重启机器。
     命令列: rundll32.exe user.exe,exitwindows
     功能: 强行关闭所有程式并关机。
     命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
     功能: 显示“拨号属性”选项视窗
     命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
     功能: 显示“桌面主旨”选项面板
     当然,不止是VisualBasic,象Delphi.VisualC++等其他程式设计语言也可以通过呼叫外部命令的方法来使用Rundll的这些功能,具体方法这里就不再详细叙述了。灵活的使用Rundll,一定会使你的程式设计轻轻松松,达到事半功倍的效果!
 
 
 
Regsvr32命令修复系统故障
Regsvr32命令是 Windows 系统提供的一个实用工具,它用来向系统注册控件或者卸载控件,利用该命令,可找回系统丢失的功能。Regsvr32命令以命令行方式运行,其命令格式为: Regsvr32 [/u] Filename, Filename是控件文件名,不带参数 u 就是注册控件,带参数 u 就是卸载控件。
l. 恢复图片预览功能: Windows XP的图片预览功能,对应的控件文件为 thurnbvw.dll。 如果该功能损坏,可单击“开始”一“运行” , 在“打开”框中输人:" Regsvr32 Thurnbvw. dll" ,单击“确定”执行命令,这时就会弹出提示框: " DllRegisterServer in Thumbvw.dll succeeded." ,这表明控件注册成功。重新启动电脑,WindowsXP 的图片预览功能便恢复了。
  2. 恢复ZIP功能:Windows XP 系统提供了ZIP功能,虽然功能不算强大,但不需要第三方软件就可打开ZIP文件,而且可以把ZIP压缩文件当作文件夹使用,也算是比较方便、实用的功能。如果该功能损坏,可在运行框中执行“Regsvr32 ZIPfldr.dll”命令,然后重新启动电脑即可恢复。
3. 恢复IE新窗口打开超级链接功能:在IE中有两种超级链接,一种是在当前页面跳转的链接,另一种是弹出新窗口的链接,对第一种链接也可按住Shift键在新窗口中打开。很多人都遇到过不能在新窗口打开链接的麻烦事儿,这个问题也是因控件注册信息丢失引起的。解决办法是:在运行框中分别执行三个命令:“Regsvr32 Actxprxy.dll ”、“Regsvr32 Shdocvw.dll”、 " Regsvr32 Oleaut32.dll ”。一这三个控件注册成功后,重新启动电脑, IE 就恢复正常了。
  4. 恢复FSO功能:现在有很多人利用自己的电脑建论坛、网站,论坛或者动态网站程序都可进行在线文件管理,管理员通过页面就可操作文件,但经常有人反映自己的论坛、网站不能在线管理文件,这是因为服务器的FSO功能没有开通或者出现故障,解决办法是:在服务器的运行框中执行“Regsvr32 Sorrun.dll " ,最后重启服务器即可开通/恢复FSO功能。
  5. 恢复在线升级功能:在Windows的“开始”菜单的顶端,有一个“Windows Update”项,可以快捷的对系统进行在线升级打补。但有时会发现无法进行在线升级,要解决这个故障,只要在运行框中执行 " Regsvr32 Wupdinfo.dll " ,重启电脑即可解决。
 
 
 
 
Regsvr32使用方法
  使用过activex的人都知道,activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具。它的用法为:
  “regsvr32 [/s] [/n] [/i(:cmdline)] dllname”。其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。
  参数有如下意义:
  /u——反注册控件
  /s——不管注册成功与否,均不显示提示框
  /c——控制台输出
  /i——跳过控件的选项进行安装(与注册不同)
  /n——不注册控件,此选项必须与/i选项一起使用
 
 
 
 
 
Regsvr32 用法和错误消息的说明
对于那些可以自行注册的对象链接和嵌入 (OLE) 控件,例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件,您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。
Regsvr32.exe 的用法
RegSvr32.exe 具有以下命令行选项: Regsvr32 [/u] [/n] [/i[:cmdline]] dllname
   /u - Unregister server<BR/>
   /i - Call DllInstall passing it an optional [cmdline];
        when used with /u calls dll uninstall
   /n - do not call DllRegisterServer; this option must
        be used with /i
当您使用 Regsvr32.exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32.exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。要查看 Win32 错误代码的列表,请参见下面的 Microsoft Web 站点: 
[url]http://msdn.microsoft.com/library/en-us/netdir/adsi/win32_error_codes.asp[/url] 
例如,要手动注册 Sample.ocx ActiveX 控件,请在 MS-DOS 提示符处键入以下命令: 
c:\regsvr32.exe sample.ocx
Regsvr32.exe 错误消息
以下列表介绍了 RegSvr32 错误消息和可能的原因。 
Unrecognized flag:/invalid_flag
键入的标志或开关组合无效(请参阅本文中的“Regsvr32.exe 的用法”一节)。 
No DLL name specified.
未包括 .dll 文件名(请参阅本文中的“Regsvr32.exe 的用法”一节)。 
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
Dllname 不是 .dll 或 .ocx 文件。例如,键入 regsvr32 wjview.exe 就会生成该错误消息。 
Dllname is not an executable file and no registration helper is registered for this file type.
Dllname 不是可执行文件(.exe、.dll 或 .ocx)。例如,键入 regsvr32 autoexec.bat 就会生成该错误消息。
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
Dllname 可能未导出,或者内存中可能有损坏的 Dllname 版本。请考虑使用 Pview 来检测该文件并删除它。 
Dllname is not self-registerable or a corrupted version is in memory.
例如,键入 regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。如果您怀疑内存中有损坏的 Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章: 
197155 如何终止孤立进程 
OleInitialize failed (or OleUninitialize failed).
Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。如果对 COM 库进行初始化或撤消初始化的尝试失败,就会出现这些错误消息。例如,Ole32.dll 文件可能已经损坏,或者其版本有误。 
LoadLibrary("Dllname") failed.GetlastError returns 0x00000485
在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“找不到运行该应用程序所需的某个库文件”。例如,键入 regsvr32 missing.dll 后,如果找不到 Missing.dll 文件,就会返回该错误消息。 
LoadLibrary("Dllname") failed.GetLastError returns 0x00000002
在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系统找不到指定的文件”。换言之,系统找不到相关的 DLL。例如,如果键入 regsvr32 icwdial.dll,而此时缺少 Tapi32.dll(依赖项),就会返回该错误消息。 
LoadLibrary("dskmaint.dll") failed.GetLastError returns 0x000001f
在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“附加到系统上的设备不能正常工作”。如果您尝试注册 Win16 .dll 文件,就会发生此现象。例如,键入 regsvr32 dskmaint.dll 会返回该错误消息。 
DllRegisterServer (or DllUnregisterServer)in Dllname failed.返回代码是:字符串
在 Winerror.h 中搜索字符串。 
Regsvr32.exe 和依赖项
RegSvr32.exe 依赖于 Kernel32.dll、User32.dll 和 Ole32.dll 文件(在 Windows NT 中,还依赖于 Msvcrt.dll 和 Advapi32.dll 文件)。Regsvr32.exe 会加载您尝试注册或撤消注册的文件及其所有依赖项。如果缺少必需的文件或者它们已损坏,该进程可能会失败。 
您可以使用 Depends.exe 来确定您尝试注册或撤消注册的文件的依赖项。在 Microsoft Windows 98 资源工具包 和 Microsoft Windows NT 4.0 资源工具包 支持工具中都提供了 Depends.exe。
247024 Tools Included with the Microsoft Windows 98 Resource Kit