VS2005 - Probleme nach Black-Patch-Day



  • Hallo,

    ich habe ein VS 2005-Projekt, das MFC dynamisch nutzt. Bis vor einiger Zeit hat auch alles prima funktionert, d.h. die kompilierte Anwendung lief auch auf fremden Rechner.
    Seit einiger Zeit funktioniert das allerdings nicht mehr, d.h. wenn die kompilierte Anwendung auf einem fremden Rechner, auf dem kein VS 2005 installiert ist, gestartet werden soll, kommt die übliche Meldung, das die Anwendungskonfiguration nicht korrekt ist usw, was normalerweise auf fehlende Dlls hindeutet.
    Ich vermute, das hängt mit dem kürzlich von Microsoft veröffentlichten Security-Patch KB2467175 zusammen. Infos, über Probleme, die damit auftreten, sind bei Martin Richter schön beschrieben:

    http://blog.m-ri.de/index.php/2011/04/14/bug-schwarzer-patchday-fur-alle-os-xp-und-spater-3-mfc-8-0-vc-2005-oder-mfc-9-0-vc-2008-die-dynamisch-gelinkt-wurden-finden-die-mfc-sprach-dlls-evtl-nicht-mehr-nach-installation-der-sicherhei/#comments

    Ich habe, wie dort beschrieben, die Security-Patches deinstalliert. Allerdings hat das bei mir nicht geholfen. Ich vermute, mein Problem liegt darin, das VS 2005 in das Manifest-File der Anwendung schreibt, das die MFC-Dlls benötigt werden, die mit dem Patch installiert wurden. Ich finde dort Sachen wie:
    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.VC80.MFC' version='8.0.50727.5592' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
    Die Version 8.0.50727.5592 ist glaube ich die, die mit dem Patch installiert wurde.

    Wie kann ich VS 2005 beibringen, das nicht diese, sondern eine andere Version der DLL gefordert werden soll?
    Bzw, vorher nimmt VS 2005 die Information, welche Version in das Manifest-File geschrieben werden soll?

    Vielen Dank im Voraus,

    Christian



  • Du hast ein Update für Visual Studio installiert, und daher generiert Visual Studio nun Executables die neuere DLLs brauchen.
    Wenn du willst dass Visual Studio das nicht mehr tut, musst du das Visual Studio Update deinstallieren.



  • Danke für die Antwort, ich hab mir schon sowas gedacht.
    Offenbar habe ich mehrere Updates für VS installiert.
    Security Update for Microsoft Visual Studio 2005 Professional Edition KB2465367 habe ich deinstalliert und damit ist der Eintrag im Manifest für die MFC verschwunden.
    Für CRT taucht allerdings immer noch die Versionsnummer 5592 auf. ist dafür ein anderes Update verantwortlich?

    <dependentAssembly>
    <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.5592' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>

    Von den verbliebenen installierten Updates konnte ich erstmal keines zuordnen und ich mag auch ungern alle auf Verdacht deinstallieren. Ist das für die CRT zuständige Update eventuell einer anderen Applikation zugeordnet?

    Christian



  • Pfuh...

    Ist das für die CRT zuständige Update eventuell einer anderen Applikation zugeordnet?

    Ziemlich sicher nicht.

    Für CRT taucht allerdings immer noch die Versionsnummer 5592 auf. ist dafür ein anderes Update verantwortlich?

    Ich finde zu der CRT Versionsnummer auch nur KB2465367. MS verwendet die Nummern normalerweise auch nicht doppelt, d.h. wenn die MFC DLLs eines bestimmten Updates Version 5592 haben, dann gibt es auch keine anderen Updates wo die CRT DLLs Version 5592 hätten.

    Vielleicht ist beim Deinstallieren was schief gegangen?

    Ich nehme an du wirst bereits versucht haben den Rechner zu rebooten...
    Hast du das Projekt auch komplett neu gebaut (Rebuild All)? Bzw. manchmal spinnt Rebuild All auch, in dem Fall lösche ich dann die entsprechenden Files per Hand und mache danach nen neuen Build.



  • Jetzt hat es funktioniert, ich hatte wohl vergessen, eines der, von der Anwendung benutzten Objects nach dem Patch-deinstallieren neu zu kompilieren. In dem Object hing noch die Abhängigkeit von CRT 5592 drin.

    Viele Dank,

    Christian


Anmelden zum Antworten