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.