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