[English]In Teil 1 und 2 der Artikelreihe hatte ich einen Hinweis von Blog-Leser Karl (al Qamar) auf ein Problem im Zusammenhang mit Sicherheitsupdates für die Visual C++ Laufzeitbibliotheken (Redistributables) aufgegriffen. In Teil 3 skizziere ich noch eine Lösung und veröffentliche einen Q & A-Liste von Karl zum Thema.
Anzeige
Die Lösung All-In-One Runtime von Dritten
Um aus dem Problem heraus zu kommen, wird ein Tool benötigt, welches die alten Visual C++ Laufzeitbibliotheken deinstalliert. Karl gibt eine Lösung in folgendem Text an.
Es gibt eine Lösung für das Problem – die All in One Runtimes 2.4.x von Patrick Kuhnke.
Ein Neustart ist empfohlen, da beim Neustart ggf. noch Redist-Dateien ersetzt werden die vorher im Zugriff waren.
Dieses Tool, an dem ich zu einem späteren Zeitpunkt auch mitgewirkt habe, deinstalliert alle veralteten C++ Redists der Versionen 2005, 2008, 2010, 2012, 2013 und 2015 und installiert die aktuellen gegenwärtig freigegebenen und sicheren Versionen.
Mit dem Tool lassen sich dann die alten Laufzeitumgebungen de- und die aktuellen Laufzeitumgebungen installieren. Eine Kurzbeschreibung findet sich auf der Webseite www.sereby.org sowie hier und hier.
Questions & Answers (Q&A)
Q: Warum sollte ich die C++ Redists überhaupt aktualisieren, es läuft doch alles?
Anzeige
A: Weil fast alle unter Windows lauffähigen Programme darauf zugreifen und so anfällig auf Buffer Overflows oder andere programmatische Attacken sind.
Q: Manche Programme installieren von sich aus alte C++ Redists obwohl schon eine neuere Version existiert. Bin ich dann geschützt?
A: Nein, MS hat es bis C++ 2013 versäumt, einen wirksamen Schutz gegen das überschreiben bzw. Side-by-Side Installationen vorzunehmen. Leider nutzen auch einige Programm nicht die in Windows bereitgestellten Redists sondern halten diese in Ihrem eigenen Programmverzeichnis vor. Ich würde aber nicht so weit gehen diese auch noch zu ersetzen. Es ist jedoch nicht zu erwarten, dass diese Komponenten durch den Softwarehersteller gepatcht werden (ähnlich wie bei OpenSSL).
Q: Warum gibt es überhaupt diese Side-By-Side Installation?
A: Die Idee dahinter, die aber laut einigen Quellen dann nicht effektiv genutzt wurde, war den Entwicklern die Möglichkeit zu geben neue Releases der C++ Redists einfacher auf eventuelle Probleme zu testen.
Q: Gibt es Probleme wenn man die alten Versionen aktualisiert?
A: Mir sind bislang keine bekannt die auf das Update selbst zurückzuführen sind.
Selbst antiquierte medizinische Programme, wo sich Programmierer wenig Gedanken über solche Dinge machen, waren in produktiven Umgebungen weiterhin funktional. Auch Spezialsoftware wie von Datev oder Adobe verursachten keine Störungen. Extrem selten kann es zu Problemen kommen wenn der Side-by-Side Store (WinSxS) defekt ist. Dann half aber die manuelle Deinstallation und Re-Installation der betroffenen C++ Redists.
Q: Gibt es für jedes C++ Release eigene Redists?
A: Grundsätzlich ja. Die C++ 2015 Redists wurden nun durch C++ 2017 ersetzt. Dies ist aber ein Novum.
Q: Warum benötigt man dann vermeintlich alte C++ 2005 Redists, wenn es doch schon C++ 2017 Redists gibt?
A: Das ist wie bei .NET. Man benötigt .NET 2.0-3.5 für alte Applikationen die mit diesem Framework kompiliert wurden.
Während man .NET 4.0-4.7 zusammen nutzen kann. Bei den C++ Redists ist es genau so, je nachdem mit welchem C++ Visual Studio die Applikation kompiliert wurde, benötigt man die entsprechenden Runtimes.
Q: ich sehe in Programme und Features immer mindestens 2 Einträge, x86 und x64. Ist das so richtig?
A: Ja, auch wenn man ein x64 bit OS nutzt, kann ein fragliches Programm ja noch in 32bit (x86) kompiliert worden sein.
Q: Was mache ich, wenn es mehrere Redists mit verschiedenen Versionsständen gibt?
A: Die alten Versionen deinstallieren, oder das Tool laufen lassen. Sollte das Tool alte Versionseinträge übrig lassen (kann selten vorkommen), sollten diese manuell deinstalliert werden.
Q: Auf Servern gibt es nicht nur die Redists sondern teilweise auch andere C++ Runtimes. Ist dies das gleiche?
A: Nein, diese Runtimes enthalten noch einen erweiterten Funktionsumfang und sind deutlich größer. Oft bei SQL Server oder Exchange. Das Versionierungsprinzip ist aber das gleiche.
Q: Warum bekommt MS das „Chaos" nicht selbst in den Griff?
A: Gute Frage! Obwohl es einen Versionscheck seit 2013 gibt, kommt es manchmal immer noch vor, dass sich C++ 2013 / 2015 installieren, obgleich schon eine neuere Version installiert ist.
Q: Bei der Deinstallation tritt folgende Meldung auf: Fehlercode 0x01
A: Dies ist nicht schlimm, wenn das Programm z.B. keine Version findet, wird er Errorlevel der Batchdatei falsch interpretiert.
Q: Wie sieht eine „korrekte" Installation gegenwärtig aus?
A: Hier ist die betreffende Liste der Module.
Artikelreihe:
Das Problem mit C++ Redists & 3rd Party Sicherheitspatches – Teil 1
Das Problem mit C++ Redists & 3rd Party Sicherheitspatches – Teil 2
Das Problem mit C++ Redists & 3rd Party Sicherheitspatches – Teil 3
Ähnliche Artikel:
Windows 7/8.1/10: Fehler Side-by-Side-Konfiguration ungültig
Anzeige
Sehr guter und interessanter Beitrag. Werde ich mal ausprobieren.
Neben dem Missstand, dass die Patches bei Microsoft (fast unberührt von deren Wichtigkeit) nur 1x im Monat erscheinen, sieht der Riese aus Redmont in dieser Frage überhaupt keinen Anlass, sich zu bewegen – ein weiteres Ärgernis.
Vielen Dank für diese Artikelreihe und den Lösungsansatz.
Hallo,
gibt es denn keine Möglichkeit (außer trial and error) herauszufinden, welches Programm welche C++ Redist benötigt?
Wenn ich z.B. ein neues Notebook von Bloatware befreie (fresh install ist nicht immer die beste Option), könnte es natürlich schon sein, dass man vorhandene C++ Redists deinstallieren könnte, da die davon abhängigen Programme entfernt wurden.
Das muss doch irgendwie möglich sein!?
Übrigens sehr interessante Artikelreihe, danke.
Danke, ich habe das jetzt ausgeführt. Man muss aber schon aufpassen, dass man dann auch die richtige Datei (aktuellste Datei) runterlädt und guckt, ob das auf den jeweiligen PC auch Sinn macht (hatte vor eine falsche runtergeladen). Jedenfalls funktioniert alles nach Neustart.
Frage: Irgendwie habe ich MS Visual C++ Compilers 2008 Standard. Ich vermute dass es mit dem von mir installierten Debugging Tools Vers. 6.11.1404 kam. Das neuere noch für Win7 lauffähige hatte ich dann wohl in 2015 oder 2016 installiert. Jedenfalls können beide Pogramme die dmp-Dateien auch verarbeiten.
Danke.
BS ist Win7 prof.
Danke für euer Interesse am Thema. Spread the word. Upvotes im Feedback Hub sind auch erwünscht, der Feedback Hub Beitrag ist nicht von mir aber ich habe Kommentare zur verdeutlichung und Screenshots dort angehängt.
"gibt es denn keine Möglichkeit (außer trial and error) herauszufinden, welches Programm welche C++ Redist benötigt?"
Nein leider nicht. Es ist auch nicht schlimm wenn man alle Redists von 2005 bis 2017 installiert hat, nur eben in JEWEILS der aktuellen Version, die Situation im Screenshot ist der Optimalzustand für alle Systeme.
Nur selten brauchen Programme zusätzlich zu den Redists noch zusätzliche SDKs oder Full Runtimes. Das habe ich bislang aber nur vereinzelt und auf Servern gesehen.
Bei Fragen gerne fragen.
@ Karl (alQamar) danke noch mal.
Ich habe das Gefühl, dass der PC besser startet. Da ich Bürosoftware (Datev) hatte ich immer das Gefühl, dass durch die diversen installierte C++ Laufzeitbibliotheken da mal was reorganisiert werden müsste, zumal da auch diverse SQL-Server durch Datev-Programme installiert werden, bei mir wurde so installiert MS SQL-Server 2005, 2008, 2012, 2014. Auch durch diverse andere Programme.
Grüße
Das wäre mir als "Seiteneffekt" neu, aber aussschließen will ich es nicht. Gern geschehen und schöne Feiertage!