Windows could not start - system 32\hal.dll

on start up I get windows could not start because the following file is missing or corrupt <windows root>\system 32\hal.dll. I have tried using system restore back more than 2 months but can't resolve. Also using "F8" on start-up starts fine using last known setting that worked. Also on F8 starts fine using nothing but normal windows start up.
Answer
Answer
Step 7 would be especially tricky.

I have never replaced a hal.dll file in my life to solve this problem and often see here in the forums folks say to copy (or expand) the hal.dl_ from the Windows installation CD is their answer.  Extremely unlikely.

Here's why that is going to be a challenge:

You probably don't want the hal.dl_ file from the XP installation CD and here's why:

When XP gets installed, it selects and expands the proper hal.dll from seven possibilities of compressed hal.dll files on the installation CD:

You can check the size of the file using the Recovery Console for clues if you are intent on replacing it first.

Possibilities of hal.dlls to expand from the XP installation CD:

 Size on XP CD              Expanded
 
 53,248 HAL.DL_         105,344 
 47,091 HALAACPI.DL_    131,840  
 40,194 HALACPI.DL_     81,152
 51,368 HALAPIC.DL_      150,528
 48,531 HALMACPI.DL_    134,400
 52,563 HALMPS.DL_       152.576
 37,780 HALSP.DL_       77,696
 
More information about the different kinds of hal.dlls:
http://support.microsoft.com/kb/309283

The Technet version:
http://technet.microsoft.com/en-us/library/bb457123.aspx
 
How to force a hal.dll during installation:
http://support.microsoft.com/kb/299340/
        


Size On XP Disk        Expanded
 
 53,248 HAL.DL_            105,344  (generic for things like VMWare)  5.1.2600.5512 (xpsp.080413-2111)
 47,091 HALAACPI.DL_    131,840     (likely for some systems and laptops)
 40,194 HALACPI.DL_     81,152
 51,368 HALAPIC.DL_    150,528
 48,531 HALMACPI.DL_    134,400  (likely for more robust systems)
 52,563 HALMPS.DL_       152.576  (multiprocessor - more than 1 CPU)
 37,780 HALSP.DL_     77,696
 
Each one of those can expand into a hal.dll file, so if it is your intent to replace your hal.dll, you would have to either figure out or know in advance which one is the right one for your hardware, motherboard and CPU.  If you just picked one at random, you would have a one in seven chance (14%) of getting the correct one.  Maybe you will get lucky.

If you just expand the hal.dl_ from the XP installation CD, that is the simplest, most generic of all the choices (probably not the right one).

The hal.dl_ file on the CD is the most boring of them all:

HAL.DL_

    * Standard PC


That is a good choice for some virtual machines where there is no real "hardware" (like VMWare), but it is a very poor choice for most other environments, but people keep suggesting it.

You system may in fact boot with it, but you will be missing a lot of functionality that is built in to the other hal.dll files.

For example, if I wanted to replace the hal.dll file on one system here, I would need to expand this file to become hal.dll:

HALMACPI.DL_

    * Standard PC
    * Advanced Configuration and Power Interface (ACPI) PC
    * ACPI Multiprocessor
    * MPS Multiprocessor


If I wanted to replace the hal.dll file on another system here, I would need to expand this file to become hal.dll:

HALAACPI.DL_

    * Standard PC
    * Advanced Configuration and Power Interface (ACPI) PC
    * ACPI Uniprocessor
    * ACPI Multiprocessor


One of those two are what you will probably find on most modern systems desktops/laptops.

If you check the Properties, Internal Name of the hal.dll on your working system, you can see which kind of hal.dll file you have and it is probably
not going to be just "hal.dll" (check yours and see).  So if you expanded your hal.dl_, you would have a big problem...

If the thought is that you need to replace your hal.dll because your system was complaining that the hal.dll file was missing or corrupt, the message is usually misleading and the real problem is usually the boot.ini file and has nothing to do with the hal.dll file.

Sometimes XP just can't find the file because the file system is corrupted and you just need to run chkdsk /r from the XP Recovery Console so XP can find the file again.  Always start with that first, since even trying to rebuild the boot.ini doesn't make sense if the file system is corrupted.

I would always start with a chkdsk /r first (it will not hurt to run chkdsk /r even if it finds nothing to do), then take a look at the boot.ini file.

This is also why when folks trying to help give you instructions to put in your XP CD and expand the hal.dl_ file to replace yours, it is generally weak advice from a well meaning novice.  It is a noble effort and a good thoought but unlikely to work. 

The hal.dl_ file on the XP installation CD is the least likely to be the right choice of the possible hal.dll files on the CD.

The second problem with that advice is most people do not have an XP installation CD to begin with, so you need to come up with some other plan if you
are compelled to replace the hal.dll file (floppy, USB device, etc.)

That kind of help is usually going to be very wrong - although it sort of makes sense at first and is "logical", but it will never work out favorably and that is generally not the problem anyway.  You can learn about all the different hal.dll files on the XP installation CD and then figure out which one is the right one for your system, but the fact is that the hal.ddl is probably not really missing or corrupt - and you can check in Recovery Console first
instead of just trying to replace it and hope you get the right one.

I have never needed to replace a hal.dll file to resolve this issue - that is never really the problem.

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

Answer
Answer
I think that you should use the System File Checker tool:  http://support.microsoft.com/kb/929833 (You can start this tool in Safe Mode)

Hopefully that would solve your problem :)

Use the System File Checker tool (SFC.exe) to determine which file is causing the issue, and then replace the file. To do this, follow these steps:
  1. Open an elevated command prompt. To do this, click Start, click All Programs, click Accessories, right-clickCommand Prompt, and then click Run as administrator. If you are prompted for an administrator password or for a confirmation, type the password, or click Allow.
  2. Type the following command, and then press ENTER:
    sfc /scannow
    The sfc /scannow command scans all protected system files and replaces incorrect versions with correct Microsoft versions.

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

 
 

Question Info


Last updated August 3, 2019 Views 2,847 Applies to: