So beheben Sie Windows Visual C++-Laufzeitfehler

So beheben Sie Windows Visual C++-Laufzeitfehler

Gemeinsam genutzte Bibliotheken in Windows machen die Programmierung für den Programmierer viel effizienter, der nicht jedes Mal das Rad neu erfinden muss, wenn er eine gemeinsame Aufgabe ausführen muss. Sie machen es auch einfacher, Sicherheitslücken in gemeinsam genutztem Code zu schließen, wenn sie gefunden werden, da er an weniger Stellen gepatcht werden muss und nicht jede Anwendung neu kompiliert werden muss.





Trotz dieser positiven Aspekte können sie ihre eigenen Probleme aufwerfen, wenn sie versuchen, die Ursache der von ihnen generierten Fehlermeldungen zu beheben.





Unsere Leserfrage:

Wie behebe ich ein Windows Vista 32-Bit C:Windowsexplorer.exe-Problem auf einem Dell Inspiron 530?





Nachdem ich in dem im Screenshot gezeigten Dialog auf die Schaltfläche OK geklickt habe, wird der Bildschirm schwarz und kehrt zum normalen Betrieb zurück, aber ich kann nicht auf die Laufwerke C, D und manchmal E zugreifen, wenn ich versuche, darauf zuzugreifen von Mein Computer.

Laufen sfc /scannow findet keine Fehler. Ich habe Updates von den Websites von Dell und Microsoft heruntergeladen, um dieses Problem zu beheben. Ich habe auch das Microsoft Visual C++ 2010 Redistributable Package (x86) installiert. Der PC ist laut Windows Update auf dem neuesten Stand.



Bruces Antwort:

Hinweis: Diskussionen über Windows Explorer in Windows 7 und früheren Versionen gelten auch für den Datei-Explorer in Windows 8 und höheren Versionen. Wenn es einen nennenswerten Unterschied zwischen ihnen gibt, wird dies explizit angegeben.

Die Windows-Shell

Windows Explorer ist die Shell und wird als der Prozess explorer.exe ausgeführt, wie im Task-Manager oder im Prozess-Explorer von Sysinternals zu sehen ist. Wie bei vielen anderen Windows-Programmen ist nicht die gesamte von der Shell bereitgestellte Funktionalität in diese einzelne ausführbare Datei integriert. Es gibt Dutzende anderer EXE- und DLL-Dateien, die verwendet werden, um Eigenschaftsblätter, Eigenschaftshandler, Vorschauhandler, Kontextmenüs und viele andere Elemente zu implementieren, die Sie täglich im Windows Explorer verwenden.





Erweiterbare Schale

Shell-Erweiterungen ermöglichen es Programmierern, dem Windows-Explorer einfach Funktionen hinzuzufügen, indem sie eine DLL schreiben, um die Aufgabe auszuführen, und die DLL beim Betriebssystem registrieren, damit Explorer weiß, wo der Code zum Ausführen der Aufgabe zu finden ist. Zum Beispiel, 7-zip fügt dem Standardkontextmenü ein Untermenü hinzu, das einen schnellen Zugriff auf Archivierungsaufgaben ermöglicht, Hard Disk Sentinel fügt den Standardlaufwerksymbolen Symbolüberlagerungen hinzu, sodass Sie den Zustand des Laufwerks auf einen Blick sehen können, und HashTab fügt ein neues Eigenschaftsblatt hinzu, um Hashes der ausgewählten Datei zu berechnen und anzuzeigen.

Viele dieser Shell-Erweiterungen werden als prozessinterne COM-Server (Component Object Model) implementiert. Das bedeutet, wenn ein Prozess, in diesem Fall der Windows Explorer, die Erweiterung verwendet, wird er im Task-Manager oder Prozess-Explorer nicht als separater laufender Prozess mit eigener Prozesskennung (PID) angezeigt. Stattdessen wird es innerhalb des aufrufenden explorer.exe-Prozesses ausgeführt.





Standard-Einzelinstanzprozess

Windows Explorer ist so geschrieben, dass er als zwei separate Prozesse ausgeführt werden kann, aber in seiner Standardkonfiguration wird er nur eine einzige Instanz ausführen. Wenn es zum ersten Mal als Teil des Startvorgangs ausgeführt wird, erstellt es die Windows-Desktopumgebung. Durch erneutes Ausführen wird im bestehenden Prozess ein neuer Thread erstellt, der das bekannte Dateiverwaltungsfenster anzeigt, anstatt einen neuen Prozess zu starten.

Dieses Verhalten ermöglicht einen geringeren Speicherbedarf, kann aber auch bei der Problembehandlung eine kleine Wendung mit sich bringen. Ein kritischer Fehler oder eine unbehandelte Ausnahme im Code, der im Prozess explorer.exe ausgeführt wird, einschließlich prozessinterner Server, die von DLLs bereitgestellt werden, führt dazu, dass die gesamte Desktopumgebung damit ausfällt.

In den meisten Fällen wird der Desktop-Prozess automatisch neu gestartet. Wenn es nicht neu startet, sollten Sie immer noch Strg-Umschalt-Esc verwenden können, um den Task-Manager aufzurufen. Von dort gehen Sie zu Datei > Neue Aufgabe (Ausführen…) > Typ explorer.exe > OK um den Vorgang neu zu starten.

Dies kann durch eine einfache Änderung vermieden werden. Offen Windows Explorer > Organisieren > Ordner- und Suchoptionen unter Vista/7. Öffnen Sie für Windows 8 und höher Datei-Explorer > Ansicht > Optionen > Ordner- und Suchoptionen ändern . Wähle aus Registerkarte 'Ansicht' und prüfe Ordnerfenster in einem separaten Prozess starten .

Windows 10 Tablet in Android umwandeln

Wenn Sie diese Einstellung ändern, wird Ihr Desktop-Prozess von allen anderen geöffneten Windows Explorer-Fenstern isoliert. Wenn eines dieser Explorer-Fenster abstürzt, bleibt Ihr Desktop unversehrt.

Microsoft Visual C++-Laufzeitbibliothek (CRT)

Die Microsoft Visual C++ Runtime Library bietet Routinen zum Programmieren von Windows, die viele Aufgaben automatisieren, wie z. B. Eingabe/Ausgabe, Dateibearbeitung, Speicherzuweisung, Systemaufrufe und vieles mehr.

Bei jeder Windows-Installation sind mindestens zwei verschiedene Versionen der CRT installiert. Auf einer frisch erstellten Maschine mit Vista SP2 bis Windows 10 sind sowohl Version 8.0 als auch 9.0 (VC 2005 bzw. VC 2008) vorhanden. Wenn zusätzliche Software installiert wird, kann sie auch neuere Versionen der Laufzeitumgebungen enthalten, je nachdem, welche Version von Visual C++ verwendet wurde, um das Programm oder eine seiner Komponenten zu erstellen.

Laufzeitfehler

Wenn in einem Codeabschnitt ein Fehler oder eine Ausnahme auftritt, wird er idealerweise so schnell wie möglich in der derzeit ausgeführten Prozedur behandelt und entweder korrigiert oder ermöglicht einen ordnungsgemäßen Fehler. Wenn der Fehler nicht lokal behandelt wird, wird er an den Code übergeben, der den aktuell ausgeführten Code aufgerufen hat, und der Prozess wird fortgesetzt, bis die Ausnahme behandelt wird. Wenn es seinen Lauf bis zum Anfang der Kette beendet und es immer noch nicht behandelt wird, wird ein Laufzeitfehler wie oben gezeigt generiert.

Wenn der Benutzer auf die Schaltfläche OK klickt, wird der Vorgang beendet. Wenn das Programm ein definiertes Fehlerverhalten aufweist, z. B. kritische Dienste, oder sein Ausführungszustand von einem anderen Prozess überwacht wird, kann es automatisch neu gestartet werden. Dies geschieht in diesem Fall. Der Bildschirm wird schwarz, wenn der Prozess explorer.exe beendet wird, dann kehrt der Desktop zurück, wenn der Prozess explorer.exe neu gestartet wird.

Obwohl die obige Fehlermeldung eindeutig darauf hinweist, dass sie vom Prozess explorer.exe stammt, handelt es sich wahrscheinlich nicht um ein Problem mit explorer.exe selbst. Es ist viel wahrscheinlicher, dass der Schuldige woanders liegt, beispielsweise in einer Drittanbieter-Erweiterung, die von Explorer verwendet wird.

Andere Überlegungen

Bei der obigen Beschreibung des Problems durch unseren Leser gibt es ein paar zusätzliche Punkte, die wir berücksichtigen müssen:

  • Zum Zeitpunkt des Absturzes versuchte Explorer, die Listenansicht zu füllen, aber es gelang ihm nicht.
  • Die Unfähigkeit, auf Laufwerke zuzugreifen, nachdem der Desktop neu gestartet wurde, kann darauf hindeuten, dass ein oder mehrere dieser Geräte bei einem anderen Prozess gesperrt sind, wodurch der Zugriff durch den neu erstellten explorer.exe-Prozess verhindert wird.
  • Laufen sfc /scannow und einen sauberen Gesundheitszustand zu erhalten, setzt Windows-geschützte Ressourcen zur Prüfung an das Ende der Liste. Andere Ursachen sind viel wahrscheinlicher.

Die Fixes sind da

In diesem speziellen Fall gibt es drei Bereiche, in denen ich nach einer Lösung suchen würde. Bei der ersten handelt es sich um den Windows-Suchdienst, bei der zweiten handelt es sich um die Untersuchung von Shell-Erweiterungen und bei der letzten handelt es sich um die weitervertreibbaren VC++-Dateien selbst.

Da der ursprüngliche Screenshot den Absturz zeigt, wenn Explorer versucht, die Listenansicht zu füllen, blockiert der Windows-Suchdienst möglicherweise den Zugriff auf die erforderlichen Ressourcen. Ich habe gesehen, dass dies passiert, wenn der Dienst abstürzt und nicht die richtigen Neustartparameter hat.

Drücken Sie Win+R > Typ services.msc > OK um die Management-Konsole mit dem Dienste-Modul zu starten. Scrollen Sie nach unten zu Windows-Suche und doppelklicken Sie auf den Eintrag, um das Dialogfeld Eigenschaften zu öffnen. Stellen Sie sicher, dass die Einstellungen auf der Registerkarte Wiederherstellung mit der Abbildung unten übereinstimmen.

Das häufigste Problem ist die Einstellung „Dienst neu starten nach:“. Dieser Fehler tritt häufig auf, wenn diese Einstellung ungleich Null ist.

Problematische Shell-Erweiterungen

Herunterladen ShellExView von Nirsoft für Ihre Systemarchitektur (x86 oder x64) installieren und ausführen. Es wird einige Zeit dauern, das System zu untersuchen und die Tabelle mit Daten zu füllen. Scrollen Sie zur Spalte CLSID Modified Time und klicken Sie auf die Kopfzeile, um nach diesem Feld zu sortieren. Wenn Sie die von Microsoft bereitgestellten Module ausschließen möchten, gehen Sie zu Optionen > Alle Microsoft-Erweiterungen ausblenden . Wenn Sie eine 64-Bit-Version von Windows verwenden, möchten Sie möglicherweise auch die 32-Bit-Erweiterungen auf dem System anzeigen, indem Sie zu . gehen Optionen > 32-Bit-Shell-Erweiterungen anzeigen .

Suchen Sie nach Erweiterungen, die kurz vor Beginn der Symptome hinzugefügt wurden. Wählen Sie eine oder mehrere aus und drücken Sie F7 oder gehe zu Datei > Ausgewählte Elemente deaktivieren , oder klicken Sie auf das rote LED-Symbol in der Symbolleiste. Idealerweise sollte dies nacheinander erfolgen.

Testen Sie, ob die Symptome anhalten. Wenn dies der Fall ist, können Sie die zuvor deaktivierte(n) Erweiterung(en) wieder aktivieren, indem Sie verwenden F8 , Datei > Ausgewählte Elemente aktivieren , oder das grüne LED-Symbol in der Symbolleiste. Deaktivieren Sie von hier aus eine andere Erweiterung und wiederholen Sie den Testvorgang, bis Sie diejenige finden, die das Problem verursacht.

VC++ Redistributables reparieren/neu installieren

Ich benutze dieses als letzten Ausweg, wenn nur ein Programm Fehler auswirft. Wenn Sie mehrere Programme haben, die Probleme mit VC++-Laufzeitfehlern haben, sollten Sie dies zuerst versuchen.

Wenn ich mir die installierten Programme auf meinem System anschaue ( Systemsteuerung > Programme und Funktionen ) zeigt es jede Version der weitervertreibbaren Pakete (und einige ihrer Updates) von Version 8 bis Version 12 (VC++ 2005 bis VC++ 2013). Ich habe sie wegen der Microsoft-Programmiertools installiert, die ich verwende. Die meisten Benutzer werden nicht alle diese haben.

Sie finden die neueste Downloads für unterstützte Versionen von Visual C++ von Microsoft. Für unsere Zwecke hier müssen Sie sich nur mit den Paketen befassen, die als „weitervertreibbar“ gekennzeichnet sind. Links, die als Service Packs klassifiziert werden, sind für die Programmiertools, nicht nur für die Laufzeiten. Sie benötigen nur diejenigen, die derzeit in den installierten Programmen auf Ihrem System aufgeführt sind. Die Installation anderer Versionen hilft in diesem Fall nicht. Benutzer von 64-Bit-Betriebssystemen benötigen möglicherweise sowohl die x86- als auch die x64-Version der CRT.

Windows Update überprüft, ob auf Ihrem Computer die neuesten Updates für diese Pakete installiert sind, überprüft jedoch nicht, ob es ordnungsgemäß installiert und nicht beschädigt ist. Die Installer können überprüfen, ob alle Laufzeitdateien korrekt und alle Registrierungseinträge korrekt sind.

Nachdem Sie die entsprechenden Installationsprogramme heruntergeladen haben, führen Sie sie auf dem System aus. Bei den 2005er Versionen werden Sie aufgefordert, eine Lizenzvereinbarung zu akzeptieren, bevor Sie das Paket erneut installieren. Alle anderen haben eine GUI, die Sie fragt, ob Sie die vorhandene Installation reparieren oder deinstallieren möchten. In den meisten Fällen behebt ein Reparaturvorgang alle Probleme.

Wenn Sie die extremste Methode ausprobieren möchten, können Sie die Laufzeiten deinstallieren, den Computer neu starten und dann neu installieren. Ich empfehle diese Methode nicht mit den Laufzeiten 2005 und 2008. Ohne sie generiert Windows viele Fehler und viele Funktionen stehen Ihnen beim Neustart nicht zur Verfügung.

Abschluss

Mit ein wenig Beobachtung, einem Hauch von Versuch und Irrtum und etwas Verständnis dafür, wie Fehler von Laufzeiten auf dem System generiert werden, können Softwareprobleme gefunden und behoben werden, ohne auf komplizierte Debugging-Tools und Protokolle zurückgreifen zu müssen.

Sind Laufzeitfehler auf Ihrem System aufgetreten? Was war erforderlich, um sie zu lösen? Lass es mich in den Kommentaren unten wissen.

Teilen Teilen Tweet Email Hier ist der Grund, warum das FBI eine Warnung vor Hive Ransomware herausgegeben hat

Das FBI warnte vor einem besonders bösartigen Ransomware-Stamm. Aus diesem Grund müssen Sie bei Hive-Ransomware besonders vorsichtig sein.

Weiter lesen
Verwandte Themen
  • Fenster
  • Technologie erklärt
  • Fragen Sie die Experten
  • Windows Explorer
  • Fenster
  • Dateimanager
  • Windows-Suche
  • Fehlerbehebung
Über den Autor Bruce Epper(13 veröffentlichte Artikel)

Bruce spielt seit den 70er Jahren mit Elektronik, seit den frühen 80er Jahren mit Computern und beantwortet präzise Fragen zu Technologien, die er die ganze Zeit nicht verwendet oder gesehen hat. Er nervt sich auch selbst, indem er versucht, Gitarre zu spielen.

Mehr von Bruce Epper

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren