My brother's computer refused to boot into Vista and would always go into chkdisk, so I figured there was something physically wrong with the drive. I booted into a Linux live cd and used a tool called ddrescue to recover whatever data it could off of the failing 250GB drive (and discovered that there were in fact a few dead sectors). I got a new 500GB drive to replace the old one but was advised against dding the data back to the new drive because the additional space on the larger drive would be unusable. Instead I used rsync, which seemed to work; I could boot into Vista just fine.
However, when in Vista, I discovered that all of Windows' symlinks were broken and looked like this (I had the image of the dead drive mounted at /tmp/mount on Linux while rsyncing):
This isn't too much of a problem for normal use but things like Windows Update now don't work. Is there any way to trawl through all of the files on Windows, look for these broken symlinks, and create new ones to the intended target? Or better yet, is there a way to just go and restore all of Windows' default symlinks? Or is there any other solution to this?