Below is the solution used in vista.I refered it from a site.Try this at your risk.
Solution 1
You’ll need to manually restore some files again to the version that came with your Windows installation DVD. Use the Windows DVD to boot into repair mode and restore these files using the command prompt:
In your “\Windows\System32\” folder, restore just these files:
hal.dll
ntoskrnl.exe (You shouldn’t need to replace it because it’s not really corrupted.)
ntkrnlpa.exe (Same as ntoskrnl.exe. Try booting without replacing them first)
And in your “\Windows\System32\Drivers” folder, restore these:
acpi.sys
msisadrv.sys
pci.sys
volmgr.sys
volsnap.sys
disk.sys
Make sure to rename or backup the files you’re going to replace (just in case you do something wrong). All the original files you’ll need to replace your “corrupted” files with should be found inside the virtually mounted drive (X:\), so they should be in “X:\Windows\System32″\ and “X:\Windows\System32\Drivers\” (you don’t need to “expand” any files like the old XP days, you’ll just need to use basic “copy” and “rename” commands).
HINT: If you’re not too comfortable using the command prompt, you can use the notepad’s file browser to copy and paste files from inside the repair DVD. Just type “notepad.exe” in the command prompt and set the file type to ALL inorder to see non-txt files.(WARNING: It doesn’t prompt you when overwriting files and It doesn’t show hidden or system files, but you shouldn’t need it to anyways)
After it boots successfully you should try to reinstall SP1 again BUT DO NOT USE WINDOWS UPDATE TO REINSTALL IT, DOWNLOAD THE STANDALONE RELEASE . It’s highly recommended to reinstall SP1 again because eventhough after you’re going to boot, Windows will say that it’s removing all SP1 files because the install failed, it actually doestn’t replace most of the system files. Your copy is going to be a hybrid between no SP and SP1. When you reinstall SP1, Stage 3 is going to be repeated twice, once before Stage 1 and then again after Stage 2. But that is completely normal.
You should’nt need to restore any other files for you Windows to boot. Don’t just replace all the files inside your “System32\Drivers\” folder like what that article said, that will probably do more harm than good. I used the debug boot log file from inside my Windows folder (ntbtlog.txt) to determine which files Windows is using while attempting to boot, and then I checked their file version from inside the repair DVD (right click>properties>details or just leave the mouse pointer on the file for a second); If it was 6.0.6001.18000 (SP1 release version), I replaced it with the old version from my boot DVD.
hal.dll did actually give me some trouble because it wasn’t in the X: drive. And unfortunatly it’s the VERY FIRST file the Windows Loader tries to load at boot so you’ll have to get it somehow. You can use the Automatic Repair Method as follows
If you look inside your “C:\Windows\System32″ folder, You will see three files: hal.dll, halacpi.dll, and halmacpi.dll. You will likely see that hal.dll is the same size as one of them. That’s because it’s exactly the same file just copied and renamed. Basicly if you have a multi-core PC you’ll need to use halmacpi.dll and rename it to hal.dll, If you’re running a single core PC you need to use halacpi.dll instead. The “winsxs” folder only has these two files and not hal.dll straight up because it kinda depends on the type of processor you’re using. So look inside your “winsxs” folder for folders that start with “x86_hal.inf_XXXXXX_6.0.6000.20500_none_XXXXXXX” and you’ll find these two files inside along with a “hal.inf” which you won’t need to replace (it’s inside the “inf” folder in your Windows directory), and then copy whichever one you should use -depending on your processor- to your “C:\Windows\System32\” folder. Now that I think about it, It’s probably better if you replace both halacpi.dll and halmacpi.dll inside your System32 folder too (Just to be on the safe side).
NOTE: You’ll probably find two or more folders that start with “x86_hal.inf” in your “winsxs” folder, but make sure:
1)The folder starts with just “x86_hal.inf” not “x86_hal.inf.resources”
2)The version number in the folder name is NOT “6.0.6001.18000″ because that’s SP1 one that causes the problems.
or you can look for it in your Windows folder inside your “winsxs” (ex C:\Windows\Winsxs\) folder (a folder that Vista uses to basicly backup every version of every file ever made for Windows Vista) But it’s kinda of tricky because:
1)The file is deep inside “winsxs” which has TONS of folders and files
2)The file itself is kinda of tricky to back up because the exact file isn’t actually there.
-------------------------------------------------------------------------
Suggestions are based on reference.Pls try it at your risk.