Win9x中MPREXE出错浅析
在Win 95及Win 98的应用过程中(大部分是企业联网环境下),经常会出现“MPREXE not responding”,或“MPREXE caused an invalid page of fault in module…”,同时机器会死机。那么,什么是MPREXE?同时,又是什么会使它产生错误呢?首先,MPR是指Multiple Provider Router的首字缩写,Win 95及Win 98通过MPR提供网络服务资源的无缝连接,MPR将不同的网络需求传递给适当的网络服务及资源的提供者;不管有一个或几个网络服务提供者(如Novell Network,MS NetWork等),都使用相同的界面。
当有多个网络提供者时,MRP按注册表中的秩序同时给这几个提供者发送消息。只要当一个网络提供者返回它能提供服务的消息,其他网络提供者就不再尝试提供。网络提供者的信息在注册表中值越低就越先被导入。它位于注册表如下位置:HKEY-LOCAL-MACHINE\SYSTEM\CURRENT CONTROL SET\SERVICES,其中默认的Novell Network Provider的键值是00 00 00 20;默认的Microsoft Network Provider 是00 00 00 40, 因而一般来说Netware Network 先于Microsoft Network 引导。
然后,我们再来看看MPR的出错症状及原因。从我公司的应用来看,MPR一般在三种情况下出错。
1、机器启动正常,但在出现网络logon窗口前出现“MPREXE not responding”,机器死机。
2、机器启动正常,出现logon 窗口但在登录过程中出现“MPREXE not responding”,机器死机。
3、机器启动正常,logon 执行正常,但在执行Office系列软件时,特别是Outlook 出现“MPREXE not responding”,但可结束任务不死机。
那么,是什么引起的呢?从我们的使用情况来看,主要有:
——Password List (.pwl)文件已损坏
——在Startup过程中的程序或服务与其他程序或服务发生冲突
——使用了User Profiles
——硬件有冲突
——硬件驱动程序是错误的或已损坏
——如果使用了Profiles,Windows 就不去寻找PDC(Primary Domain Controller,主域控制器)的网络连接共享,而去寻找config.pol文件。
——你的PDC不在本地,而是远程的。
——一个单独的User Profiles已被损坏
对应以上错误的解决办法:
1、重建Password List File (Office 系列软件出错时,用这一办法很有效)。使用查找来寻找计算机中的.pwl文件,找到后将其后缀改为*.old或将其删除。然后重启机器,输入用户名、密码、域名后系统将重建一个.pwl文件。
2、为避免服务或程序的冲突,必须使用Clean Boot(干净启动),Clean Boot主要是针对config.sys、autoexec.bat、system.ini、win.ini及Win 98中使用msconfig.exe的“启动”所引导的服务及程序;Clean Boot成功后,再试着一一加载所需的程序及服务,找到出错的程序及服务后将其禁用。
3、不使用User Profiles,在网络属性中单击“访问控制”,单击“共享级存取”,单击“确定”退出,而后重启机器。
4、硬件冲突,查看“设备管理器”中是否有设备打上黄色惊叹号或红色叉?若有,将其禁用。
5、驱动错误或损坏,寻找最新的驱动程序安装。
6、对于使用了Profiles而寻找config.pol及PDC不在本地引起的错误,均需使用微软称之为“Enable Load Balancing”的方法。Enable Load Balancing主要是使Client能从任一已被确认的Domain Controller(域控制器)处得到Policy(策略管理);缺省情况下,Client(客户)是从config.pol得到。
7、被损坏的User Profiles,首先用一个从未用过的用户Logon(登录), 找到引起错误的用户的Profiles(它在windows\profiles子目录中),移去这个子目录,然后Logoff(断开),再使用引起错误的用户名(原来的用户)Logon,重建User Profiles。
另外:
1、网卡也偶尔会引起MPREXE错误,可先移走网卡,在成功启动后重装网卡。
2、使用如下的用户名也会引起错误:UX,CON,COM1,COM2,COM3,COM4,PRN, LPT1, LPT2, LPT3, LPT4。不要使用这些用户名。
3、在Win 98中如果一个程序使用旧的GetOpenFileName()API并且已登录Novell网络,将会出现如下错误信息“MPREXE caused an invalid page fault in module KERNEL32.dll”,这是Win 98的一个bug。需要新的Service Pack 或下载最新的nwnp32.exe。
(完)计算机基础教程网