1. Boot to the Windows recovery console
  2. get to the proper drive (usually is c:)
  3. type attrib -H c:boot.ini enter
  4. type attrib -R c:boot.ini enter
  5. type attrib -S c:boot.ini enter
  6. type del c:boot.ini enter (you are deleting the boot.ini this is normally the reason for the corrupt hal.dll)
  7. type bootcfg /rebuild fixboot

After the fix runs reboot and everything should be fixed.  When I first did this I ran into an issue where I got an error “can fixboot on a corrupt registry”  I ran and chkdsk /r after that completed I ran step 7 again and everything worked fine.

I have also heard an alternative solution fix this issue in the recovery console do the following command

Expand D:I386HAL.DL_ c:WINDOWSSYSTEM32HAL.DLL

I have never tried this method so I cannot prove it works  but if your issue persists it might be worth a try.  If you get an “access denied” do the attrib command to the HAL.DLL file that might help you. Again I have not tried this method just giving suggestions.