Windows XP will not start because <Windows root>\system32\hal.dll file is corrupt

I get the following error message when starting my windows XP home edition PC. :Windows could  not start because the following file is missing or corrupt

<Windows root>\system32\hal.dll. PLease re-install a copy of the file. How do I do that?

This could be the result of a corrupt/missing hal.dll file or boot.ini. Do you have your windows disc? If so, follow the instructions below. If you do not have your windows disc click HERE to create a windows recovery console disc.

  1. Use the Windows XP CD-ROM to start your computer.
  2. When you receive the message to press R to repair Windows by using the Recovery Console, press the R key.
  3. Select the Windows installation that you want, and then type the administrator password when prompted.
  4. Type bootcfg /rebuild, and then press ENTER.
  5. When the Windows installation is located, the following instructions are displayed:
    Add installation to boot list? (Yes/No/All)
    [Type Y in response to this message.]

    Enter Load Identifier:
    [This is the name of the operating system. Type Windows XP Professional or Windows XP Home Edition.]

    Enter OS Load options:
    [Leave this field blank, and then press ENTER].
    After you perform the preceding steps, restart the computer, and then select the first item on the boot menu. This should allow Windows XP to start normally.

    After Windows XP has successfully loaded, the Boot.ini can be modified to remove the incorrect entry.

Microsoft Partner Network Member

Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

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

How satisfied are you with this reply?

Thanks for your feedback.

Here are just some notes I have about it.  If you have the time, you can experiment on your own system. 

Then if you find something wrong in my notes, I hope you will tell me about it, they are kind of old...

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:

The Technet version:

How to force a hal.dll during installation:

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


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

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:


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

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


    * 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 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 thought but unlikely to work and certainly not the place to start (start with chkdsk /r first).

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.

Here is a boot.ini that will result in the hal.dll missing or corrupt message:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\JOSE="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

Obviously that is wrong since there is no hal.dll in the JOSE folder for XP to find so it will complain.

If you start to try to correct it with a bootcfg /rebuild, you will end up with a mess like this:

[boot loader]
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft WIndows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\JOSE="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

What you have done is built your "good" stuff on top of the bad stuff, and the system will boot, but now the user has too many  boot options, so that will be their next complaint you have to tell them how to fix.  If they have run bootcfg /rebuild 5 times to try to get it right, the mess in the boot.ini file is worse.

You can avoid the mess and that next complaint though.

If you are going to use bootcfg /rebuild, first rename the afflicted c:\boot.ini and then use bootcfg /rebuild and it will make a brand new boot.ini file so it does not reuild on top of the afflicted one.

Also, XP does not even need a boot.ini to boot.  Rename the one you have, reboot and XP will complain about the missing file, but still boot just fine into the first XP partition it finds, then you can fix the afflicted boot.ini file (try it).

MS says you can't crack an Administrator password.  Good - you don't want to do that anyway.  Cracking passwords takes a long time on XP and forever on Windows 7.

You never want to try to crack the password, or change it or reset it - you just want to clear it so there is no password, and that takes about 10 seconds using the methods you hopefully know about it or Internet tools you can research.  You just want to "clear" it...  not hack it or reset it.

MS Says you can't crack passwords.  Since you are just clearing the password and not cracking it, you should be fine using your methods that you know about right?  You are not cracking the password - you are clearing the password.  Those are not the same things so you are in no violation of the MS rules about password cracking. 

That tells us that whoever came up with that statement has no clue about cracking, hacking, reseting or clearing passwords.  Probably little clue about XP in general except the ability to spell it properly.

But, you know what they meant to say... even though they don't know how to say it.

If you can't get into the Recovery Console because of an Administrator password, you can use something like a Hiren's CD to clear the password of course, or you could just edit the registry to tell XP that the Recovery Console does not require a password and then it won't even ask you.

This happens a lot in XP (especially XP Home) when the installed XP is SP3, but the bootable CD on hand is SP1 or SP2...  it just won't take the password or the empty password or maybe they really forgot it, so how are you going to get into the Recovery Console without messing with the password?

Use Hiren's or something like it that has a remote registry editor and edit the registry on the machine to tell XP that the Recovery Console does not require a password.

Navigate to the registry on the remote machine to (pay attention to be sure you are in the correct registry):

(REMOTE_MACHINE)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Setup\RecoveryConsole

Set the DWORD SecurityLevel value to 1 which means don't ask me for the Administrator Password in Recovery Console

Exit Registry and Reboot

Now you have not cracked, hacked, reset, changed or even cleared the Administrator password so you are really safe from the MS rules about "getting around passwords".  You haven't touched the Administrator password.  Whatever the password was is still there.

All you have done is told the Recovery Console not to ask for one.

Now you can fix it...

That is an easy one to test on your system. Flip back and forth and see how it works.

 I'm always set for no password required for Recovery Console since it saves me a keystroke - even with an empty Administrator password.

1 person found this reply helpful


Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

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

How satisfied are you with this reply?

Thanks for your feedback.


Question Info

Last updated December 24, 2019 Views 12,018 Applies to: