|
|
回复 #1 2011tianwangxhy 的帖子
XP启动丢失hal.dll文件;安装系统时反复提示hal.dll损坏或找不到的解决方案
同事的机器很神奇,上午装的系统,下午就病毒缠身,安装什么杀毒软件也无济于事。小伙子自己搞了好几天,重装了好几十遍,依然如此。这个时候,我就出场了,借了几张工具盘,看我老将上阵如何应付?
首先,使用DM分区,彻底搞废病毒。然后使用联想机器自带的winxp安装盘安装,重启黑屏半天居然提示找不到hal.dll。小问题,重新光驱启动,到控制台看看,可该死的联想自带系统盘居然没这个选项,借一张光盘,启动后在“恢复控制台”下将光盘上i386目录中的HAL文件提取出来放到Windows\system32中。操作步骤如下:
Del C:\windows\system32\hal.dll
expand X:\i386\halaacpi.dl_ C:\windows\system32\hal.dll
exit
注意,这里假设C盘是你安装XP的盘,而X是光驱所在的盘。
重新启动,还是提示找不到,难道光盘坏了?用借来的光盘安装,依然如故。还是提示找不到,奇怪了。难道病毒搞鬼?看借来的盘里有PQ,把这个家伙启动,居然提示硬盘有错误。不可能啊,分区的时候也没提示错误啊。只好用DM再次重新分区。重复下来,还是如此,用借来刚盘的效率源扫了一下硬盘分区表,没问题啊。这个时候我想到了boot.int文件,是不是这个家伙把目录给指定错了?重新光盘启动,进入DOS环境,打开boot.int一看,果然,居然在本来是multi的位置,出来一个signiture。肯定不对,改成multi(0),保存不了,呵呵,哦,文件是只读的。于是把boot.ini的只读属性去掉,改完保存,重启。呵呵,WinXP进度条终于出现了。
下面是我的操作步骤,用光驱启动到dos环境后的操作,全部在C盘根目录下。
attrib boot.ini -r -h 去掉只读和隐藏属性
edit.boot.ini
改好后,按alt+F键保存boot.ini。
仿照下面正常安装XP时的启动菜单改,我就仅仅改了multi那个位置。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP Professional” /NOEXECUTE=OPTIN /FASTDETECT
如果你觉得这个方法麻烦,我用的是雨林枫做的XP安装盘里的工具,看到里面有个win PE,或者类似的用光盘启动的系统,进入桌面后到C盘下更改boot.ini。如果这个你也觉得难,把这块硬盘挂到别的机器下,改一下就OK了。
搞定后,觉得还是有些不对劲,为什么那块出一串signiture呢?的呢?又使用KV3000查了一遍毒,没有。哎!只能这么疑惑着了。
下面是在软件星空论坛看到的关于hal.dll的一些信息。
hal – hal.dll – DLL文件信息
DLL 文件: hal 或者 hal.dll
DLL 名称: Microsoft Windows Hardware Abstraction Layer DLL
描述:
hal.dll是Windows硬件提取层模块,该用于用于解决硬件的复杂性。
属于: Microsoft Windows Operating System
系统 DLL文件: 是
常见错误: File Not Found, Missing File, Exception Errors
关键词: 无法进入Windows?XP,提示hal.dll损坏或丢失
问:
现在无法启动 Windows XP 了,提示“因以下文件的损坏或丢失,Windows无法启动:\system32\hal.dll. 请重新安装以上文件的拷贝。”请问如何解决?
答:
该故障是由于hal.dll文件损坏或丢失引起的。
解决的方法:
插入 Windows XP的安装光盘,在“恢复控制台”下将光盘上i386目录中与你电脑硬件相匹配的HAL文件解压缩到Windows\system32中,并把文件名更改为hal.dll即可。HAL文件如下表所示,共分为7种,但目前的电脑通常都为“ACPI Uniprocessor PC”或“Advanced Configuration and Power Interface (ACPI) PC”,因此我们在替换时可以先尝试这两个。不同硬件配置的电脑,系统使用的HAL文件可能不同的,所以如果替换为与电脑不匹配的 HAL 文件,将可能导致系统无法启动。下面将介绍如何在“恢复控制台”下完成整个操作:
假设 Windows XP 安装在C盘,F盘为光驱,系统的 HAL 文件属于“ACPI Uniprocessor PC”,那么进入“恢复控制台”后依次运行以下命令:
Del C:\windows\system32\hal.dll
expand F:\i386\halaacpi.dl_ C:\windows\system32\hal.dll
exit
计算机的描述文字及对应的 HAL 文件
计算机的描述文字 对应的 HAL 文件
ACPI Multiprocessor PC halmacpi.dl_
ACPI Uniprocessor PC halaacpi.dl_
Advanced Configuration and Power Interface (ACPI) PC halacpi.dl_
MPS Multiprocessor PC halmps.dl_
MPS Uniprocessor PC halapic.dl_
Standard PC hal.dl_
Compaq SystemPro Multiprocessor or 100% Compatible halsp.dl_
开机的时候进XP系统,提示:“systemrootsystem32hal.dll文件非法或该文件已损坏,系统无法启动”,搜索了一下,产生这个问题的原因无非有二:hal.dll确实丢失或损坏或boot.ini指示的路径有问题。
重新开机,进入ubuntu系统,mount上XP的c盘,找到boot.ini,打开来看,原文如下:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /DETECTHAL
windows的路径是正确的,我印象中大部分XP启动时只有/fastdetect这一个参数,所以备份boot.ini文件,然后把/DETECTHAL参数删除,重启,XP又可以正常启动了。
detecthal 参数是 Windows Longhorn 或现在叫 vista 里才有的一个参数 , 用于开机启动自动检测 HAL ( 硬件抽象层 ) 。在我的这个文件中出现这个参数应该是ntldr带来的。 |
|