Windows could not start because the following file is missing or corrupt. Windows root\system32\hal.dll.

Original Title: Hal.dll?
 
I need some help, on startup I get

Windows could not start because the following file is missing or corrupt.

Windows root\system32\hal.dll.

What should I do? I read that you shouldn't replace the file with one from the installation CD, so something besides that.
 

Question Info


Last updated December 25, 2017 Views 73 Applies to:
http://pcsupport.about.com/od/findbyerrormessage/a/missinghaldll.htm

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.

That message usually means that XP just can't find the file due to some corruption in the NT File System (NTFS) or XP is being told to look for the file in the wrong place.

You should first tell us more about your system and how you think it got this way, then you can see about fixing it:

It is too bad the MS Answers forums implementation does not prompt for any system information when a new question is asked, so we know absolutely nothing about your system.

Not knowing fundamental information about a problem prolongs the frustration and agony of resolving these issues but that is the way they choose to run things here.

Thank you MS Answers owners, for continuing to make the resolution of simple problems as frustrating and time consuming as possible.

Please answer the following questions as best you can:

What is your system make and model?

What is your XP Version and Service Pack?

Describe your current antivirus and anti malware situation:  Microsoft Security Essentials sMSE), McAfee, Symantec, Norton, Spybot, AVG, Avira!,  avast!. Panda, Trend Micro, CA, Defender, ZoneAlarm, PC Tools, Comodo, etc.

Was the issue preceded by a power interruption, aborted restart, or improper shutdown?  (this includes plug pulling, power buttons, removing the battery, etc.)

Does the afflicted system have a working CD/DVD drive (internal or external)?

Do you have a genuine bootable XP installation CD that is the same Service Pack as your installed Service Pack (this is not the same as any Recovery CDs that came with your system)?

If the system used to work properly, what do you think might have changed since the last time it did work properly?

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.

Like I've said before regarding this problem:

You can replace the file with the one from the installation CD if you have a working CD/DVD drive and it you have a genuine bootable XP installation CD that is the same Service Pack as your installed Service Pack (most people don't) and if you know enough about your hardware to select which of the 7 possible hal.dll files on the CD is the one you need (or you could try them all).

Too many ifs and that is probably not the problem anyway.

Amongst other bad ideas, the http://pcsupport.about.com WWW site suggests:

expand d:\i386\hal.dl_  c:\windows\system32

I wouldn't advise these articles ever and here's why:

I have never replaced a hal.dll file in my life for this problem, but since it seems so many people are intent of following those kinds of instructions to replace the hal.dll, I will try to explain why it is a bad idea.

First take a look at the Properties of the hal.dll on your non virtual machine working system and look at the "Internal Name" on the Version tab and see what it says.  That will tell you the name of the hal.dll file that XP chose for your system when it was installed (I doubt it is hal.dll).

Does it say hal.dll?  It probably says something else, so if you took the hal.dl_ from an XP installation disk and expanded it onto your system, you would then have a file called hal.dll, but it would be the wrong hal.dll.

When you check the Properties/Internal Name of the hal.dll on your XP system, tell us what is says:

Put your answer here

Does it say hal.dll?  Of course not.  That is why you don't want that file.

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

Size On XP Disk        Expanded
 
 53,248 HAL.DL_            105,344  (generic for 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)
 37,780 HALSP.DL_     77,696
 
Each one of those can be expanded into a file called 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 if you are not running XP in a virtual machine it is the absolute worst choice (sorry Microsoft engaged Support Engineer "experts").

You system may in fact boot with it (mine wont), 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:

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:

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.

The error message usually just means that XP can't find the file because the file system is corrupted and you just need to run chkdsk  with error correction (chkdsk  /r) from the XP Recovery Console so XP can find the file again.

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.  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.

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 that file is probably not really missing or corrupt.

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.