Not sure if this has been covered before. If you have better suggestions for thread title please let me know. What happened to me was I had to send my laptop(win 7 home premium) in for hardware repairs so I decided to take out the hdds and stick them into my pc which has hotswap and running windows 7 ultimate.
When I received my laptop I put my hdds back in and booted up. Well I left the room only to come back and see chkdsk running. Well let it go because it was already deleting entries. Anyways once it finished I realised I had lost some files. The only ones I saw right away were a few that I had worked on while the hdd was in the pc. Had a few errors with some program files but that was an easy fix by reinstalling software. Then I realized I had some corrupt windows files. Running sfc did squat. Couldn't fix anything. Tried all sorts of methods I found. One of the problems was device manager would give me a navigation cancelled error. My Computer properties wouldn't let me click on certain things, etc.. Well I finally got fed up because I needed to use device manager and couldn't so tried the repair install method. Now I don't have a retail win 7 home premium disc. The one that came with my laptop only works for clean install. Tried downloading some off the net but none were the right versions. I'm sure theres good ultimate retail discs but guess no one wants to pirate home premium lol.
So anyways after a lot of research I couldn't get it to work. On a whim I decided to look into system32 and saw a few files were 0 bytes. Checked because one fix was to run regsvr32 on dmocx.dll and that was one of the files with 0 bytes. So yea basically I replaced a bunch of files in sytem32 and syswow64 and what do you know everything seems proper now.
This is the guide for replacing files from the windows installation cd.
Extract Files from Windows 7 Installation DVD
I don't know if anyone else has experienced this but hope it helps because I wasn't able to find anyone else posting my exact situation.
Maybe a better way would be to fix the files where sfc replaces from. Is there a way to do this because changing permissions on every single file and changing back is a pain.