That is really not good advice when you understand how XP works - here's why:
Generally, replacing the hal.dll with the hal.dl_ from the XP installation CD is not going to be a good idea since:
1. Most people do not have a genuine bootable XP installation CD (always ask before suggesting somebody use the XP installation CD they probably don't have to be sure it is the same Service Pack as their installed Service Pack)
2. That hal.dll is really only good if you are running XP in a virtual environment like VMWare (unless you want a crippled system)
3. That is probably not the real problem.
Here is more information telling you why these ideas are unlikely to work.
I wouldn't advise those 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.
You probably don't want the hal.dl_ file from the XP installation CD and here's why:
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.
If you check the Properties, Version, Internal Name of the hal.dll on a 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). It is either probably halmacpi.dll or halaacpi.dll.
If you really think expanding the hal.dl_ is the right thing to do, why don't you follow your own advice and go ahead and expand your hal.dl_ file and check the Internal Name and it will be hal.dll. Then replace your current one with that one, reboot and see how things work :)
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 file system is corrupted (power failure perhaps) or the boot.ini file is afflicted and the message has nothing to do with the hal.dll file.
It usually just means that XP 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.
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.