sxs dlls not found right after login?

0

I am encountering a strange issue. An application (a tooltray icon exe) that depends on the x86 Visual C++ 2008 runtime used to start fine. This is on a x64 Windows 7 At the few recent reboots, it stated to fail login launch, with a popup saying that mfc90u.dll is not found A few minutes later, if i launch the app from the startup icon, it launches properly, and i can see the runtime dlls being loaded from the winsxs folder.

What could make winsxs dlls not available right after login?

bartoli

Posted 2018-01-04T08:21:22.283

Reputation: 1

Answers

0

Winsxs .dlls are not to be actively used. They are versioned backups. If a previous version of a .dll is needed by something, it's taken from there. If the .dll is actually missing, the winsxs location acts like a backup location, therefore several kernel dependencies need to be loaded for it to properly function.

To fix the issue, just copy the mfc90u.dll from winsxs to %windir%\system32\ or the location where the programs's .exe is.

Reinstalling the latest versions of Microsoft Visual C++ Redistributable should also fix the problem, since the .dll is part of those distributions.

Overmind

Posted 2018-01-04T08:21:22.283

Reputation: 8 562

So, where else should the 'installed' versions be placed on a proper install if winsxs is only backup? c:/windows/{System32,SysWOW64}? Reinstalling the vs2008 runtime (repair mode) does not make mfc9.dll appear there, whereas i can see other MFC.dll for other runtime versions – bartoli – 2018-01-04T10:11:45.463

Installing the 32-bit version should land the .dll in C:\Windows\System32 and if you install the 64-bit version , it should be in C:\Windows\SysWOW64. If they are not copied there, it means the OS considers them too old and will keep them only in locations named like WinSxS/AMD64_microsoft.vc90 and WinSxS/x86_microsoft.vc90 . As a notice, I always prefer dropping the files where the .exe that needs them is. The classic way is the best way. – Overmind – 2018-01-04T10:42:43.610