Do a checkdisk from recovery console and see if it helps, it may repair the logical structure of the system partition. Otherwise you'll have to reinstall the hal.dll from recovery console (possibly from dllcache) after you rename the original one if still present. Mind you, there are multiple versions of hal.dll, you have to choose the right one otherwise you may end up with your pc asking for the drivers of all peripherals, and some other less than funny side effects that may render your computer useless or almost useless until you choose the correct driver for your computer (mine is - for instance - Uniprocessor ACPI PC, or something like that, I translated from Italian). Refer to Microsoft Knowledge Base for more information on Hardware Abstraction Layer and relative drivers to make sure you understand the differences, so you know why you have to be careful.
Keep in mind there may be some other file missing or damaged. Read also
this and check if it applies (maybe, maybe not).