My system disk had been corrupted. I managed to recover from it mostly, but still some programs would not start. sfc /scannow
reports that some files were not fixed, and mfc90.dll among them. I suspect this is the reason. I confirmed the file in question under WinSxS has a signature mismatch, therefore definitely corrupted.
In Control Panel, there are multiple entries for "Microsoft Visual C++ 2008 Redistributable - x86" - different versions. I uninstalled the one that matches the build number of the file that is corruped, but the file under WinSxS remains (probably because it is marked as used by other programs). I also tried "repair" functions of several programs that are affected, without success (they fail for different reasons).
My question: How can I delete this DLL file under WinSxS folder (from within Windows), and is it safe (I have several other copies of it, but different build numbers. E.g the corrupted one is 9.0.30729.4137, but 9.0.30729.4974 appears to be ok).
I realize I'm facing system reinstall as a long-term solution, i just need a quick fix in order to survive several weeks without reinstall.
Answer
First I dont know what I am doing, and have never pulled off this particular thing. I am not going to do it anyways :-) you are, if you want. But here are some of the aproaches, In no particular order, and just Psyco , with no fact based solution on a platter.
1) Is it corrupt file/place on disk?
1A) Run CHKDSK on the drive with a /r option.
1B) Backup the whole system partition using a image backup, you have to have one anyways to do all the evil things I will dream up to destroy this file anyways :-) Make sure you validate the backup and are positive of it.
Now restore that backup, this will force the re-write of the whole system.
1) With the above were sure of one thing, corruption is not in the way of the removal. You probably know if disk corruption is part of the problem. But the backup itself will still need to be done for survival.
2) shared dlls
2A) A proper uninstall will not occur for a "sharedDlls" that has a Use number greater than 1 , meaning it would be 0 on the last uninstall. One of the locations for these is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs.
2B) find the file in any of the shared dll locations in the registry and toss them all, why bother with the number if the point is to remove/replace .
2C) find it anywhere else in the registry and remove it anyways , This is an older dll, and is not part of the system itself, so who cares.
2) Were trying to get a re-install going of the re-distibutable so we might have to get agressive. You have the above backup, so rip-and tear.
This only is needed when your trying to uninstall and the Use Number is holding it up, using Proper uninstall methods.
There may be other locations in the registry that Identify that the redistributable is already installed, that could still be a problem when re-installing the redistributable.
3) Figure out its Linkage
3A) Install this hard link viewer thing, "HardLinkShellExt_X64" that will show you how many links there are (or not) pointing to the data on the disk location.
3B) remove all the links except for the last one (which would be deletion of the data itself)
3) I dont really know, but if you do manage to delete data on a disk, without the removal of the hard links themselves (not easily accomplished) you could end up with a pointer to nowhere. At least this thing will show what is going on, and what the links are (or arent).
4) Get vicious with removal
4A) Install the utility called "take ownership" this can mess with permission on the file/folder, so you can destroy things with permissions that stop the administrator from removing them. Run it on the file that your trying to remove if permissions are in the way of removal.
4B) Install "unlocker" this can unlock things that are using it, and even delete on re-boot. Also File assasin in MBAM would be able to do about the same thing. This can delete files that are obstinate. If permissions are in the way, you have to take care of them first.
5) somewhere in here we reinstall the original redistributable
5A) find the program that installed the thing to begin with search for Vcred*.* on the install disks . Often found in a redistributables folder on the programs disks. The idea here it not to re-install the whole program needlessly , but to just re-install that broken redist of it.
6) Retract the image backup, because I was wrong, and have now made things worse :-)
7) When a sfc scan does not complete the job of repairing the system, often a "lapped Install" can fix things. but this item is not part of the original windows 7 install.
No comments:
Post a Comment