我遇到了一个奇怪的问题。一个依赖于 x86 Visual C++ 2008 运行时的应用程序(工具托盘图标 exe)可以正常启动。这是在 x64 Windows 7 上。在最近几次重启时,它显示登录启动失败,并弹出一个窗口,提示未找到 mfc90u.dll。几分钟后,如果我从启动图标启动该应用程序,它会正常启动,我可以看到从 winsxs 文件夹加载的运行时 dll。
什么原因导致登录后 winsxs dlls 不可用?
答案1
Winsxs .dll 不应被主动使用。它们是版本备份。如果某项操作需要 .dll 的先前版本,则会从那里获取。如果 .dll 确实丢失,则 winsxs 位置将充当备份位置,因此需要加载多个内核依赖项才能使其正常运行。
要解决此问题,只需将 mfc90u.dll 从 winsxs 复制到 %windir%\system32\ 或程序的 .exe 所在的位置。
重新安装最新版本的 Microsoft Visual C++ Redistributable 也应该可以解决问题,因为 .dll 是这些发行版的一部分。