Jak naprawić błędy uruchomieniowe Windows Visual C++

Jak naprawić błędy uruchomieniowe Windows Visual C++

Współdzielone biblioteki w systemie Windows sprawiają, że programowanie jest znacznie wydajniejsze dla programisty, który nie musi wymyślać koła na nowo za każdym razem, gdy musi wykonać wspólne zadanie. Ułatwiają również zatykanie luk bezpieczeństwa we współdzielonym kodzie, gdy zostaną znalezione, ponieważ wymaga on łatania w mniejszej liczbie miejsc i nie wymaga ponownej kompilacji każdej aplikacji.





Pomimo tych pozytywnych aspektów, mogą stwarzać własne problemy, próbując rozwiązać podstawową przyczynę komunikatów o błędach, które mogą generować.





Pytanie naszego Czytelnika:

Jak rozwiązać problem z 32-bitowym plikiem C:Windowsexplorer.exe w systemie Windows Vista na komputerze Dell Inspiron 530?





Po kliknięciu przycisku OK w oknie dialogowym pokazanym na zrzucie ekranu ekran zgaśnie i powróci do normalnego działania, ale nie pozwoli mi uzyskać dostępu do dysku C, D, a czasami także do dysku E podczas próby uzyskania do nich dostępu z Mojego komputera.

Bieganie sfc /skanuj nie znajduje żadnych błędów. Pobrałem aktualizacje zarówno ze stron internetowych Dell, jak i Microsoft, próbując rozwiązać ten problem. Zainstalowałem również pakiet redystrybucyjny Microsoft Visual C++ 2010 (x86). Komputer jest całkowicie aktualny zgodnie z Windows Update.



Odpowiedź Bruce'a:

Uwaga: dyskusje na temat Eksploratora Windows w systemie Windows 7 i wcześniejszych wersjach dotyczą również Eksploratora plików w systemie Windows 8 i nowszych wersjach. Jeśli jest między nimi wyraźna różnica, zostanie to wyraźnie stwierdzone.

Powłoka systemu Windows

Eksplorator Windows jest powłoki i działa jako proces explorer.exe, jak widać w Menedżerze zadań lub Eksploratorze procesów Sysinternals. Podobnie jak w przypadku wielu innych programów systemu Windows, wszystkie funkcje zapewniane przez powłokę nie są zawarte w tym pojedynczym pliku wykonywalnym. Istnieją dziesiątki innych plików EXE i DLL używanych do implementacji arkuszy właściwości, programów obsługi właściwości, programów obsługi podglądu, menu kontekstowych i wielu innych elementów używanych codziennie w Eksploratorze Windows.





Rozszerzalna powłoka

Rozszerzenia powłoki umożliwiają programistom łatwe dodawanie funkcji do Eksploratora Windows poprzez napisanie biblioteki DLL w celu wykonania zadania i zarejestrowanie tej biblioteki w systemie operacyjnym, dzięki czemu Eksplorator wie, gdzie znaleźć kod do wykonania zadania. Na przykład, 7-zip dodaje podmenu do standardowego menu kontekstowego, dając szybki dostęp do zadań związanych z obsługą archiwów, Hard Disk Sentinel dodaje nakładki ikon do standardowych ikon dysków, dzięki czemu można szybko sprawdzić stan dysku oraz HashTab dodaje nowy arkusz właściwości, aby obliczyć i wyświetlić skróty wybranego pliku.

Wiele z tych rozszerzeń powłoki jest zaimplementowanych jako serwery COM (Component Object Model). Oznacza to, że gdy proces, w tym przypadku Eksplorator Windows, używa rozszerzenia, nie pojawi się ono w Menedżerze zadań lub Eksploratorze procesów jako osobny uruchomiony proces z własnym identyfikatorem procesu (PID). Zamiast tego jest wykonywany w procesie wywołującym explorer.exe.





Domyślny proces jednoinstancyjny

Eksplorator Windows został napisany tak, aby mógł działać jako dwa oddzielne procesy, ale - w swojej domyślnej konfiguracji - uruchomi tylko jedną instancję. Kiedy jest uruchamiany po raz pierwszy w ramach procesu uruchamiania, tworzy środowisko pulpitu Windows. Wykonanie go ponownie tworzy nowy wątek w istniejącym procesie, który wyświetla znajome okno zarządzania plikami, zamiast rozpoczynać nowy proces.

To zachowanie pozwala na zmniejszenie zużycia pamięci, ale może również wprowadzić swój własny mały zwrot podczas rozwiązywania problemów. Krytyczny błąd lub nieobsługiwany wyjątek w kodzie wykonywanym w procesie explorer.exe, w tym na serwerach w procesie dostarczonych przez biblioteki DLL, spowoduje awarię całego środowiska graficznego.

W większości przypadków proces pulpitu zostanie automatycznie uruchomiony ponownie. Jeśli nie uruchomi się ponownie, nadal powinieneś być w stanie użyć Ctrl-Shift-Esc, aby wyświetlić Menedżera zadań. Stamtąd przejdź do Plik > Nowe zadanie (Uruchom…) > rodzaj explorer.exe > OK aby ponownie uruchomić proces.

Można tego uniknąć dzięki prostej zmianie. otwarty Eksplorator Windows > Organizuj > Opcje folderów i wyszukiwania w systemie Vista/7. W systemie Windows 8 i nowszych otwórz Eksplorator plików> Widok> Opcje> Zmień folder i opcje wyszukiwania . Wybierz Zobacz kartę i zaznacz Uruchom okna folderów w osobnym procesie .

Windows 10 wolno po aktualizacji 2019

Zmiana tego ustawienia powoduje odizolowanie procesu pulpitu od wszystkich innych otwartych okien Eksploratora Windows. Jeśli któreś z tych okien Eksploratora ulegnie awarii, pulpit pozostanie bez szwanku.

Biblioteka środowiska uruchomieniowego Microsoft Visual C++ (CRT)

Biblioteka Microsoft Visual C++ Runtime udostępnia procedury programowania systemu Windows, które automatyzują wiele zadań, takich jak wejście/wyjście, manipulacja plikami, alokacja pamięci, wywołania systemowe i wiele innych.

Każda instalacja systemu Windows będzie miała zainstalowane co najmniej dwie różne wersje CRT. Świeżo zbudowany system Vista SP2 z systemem Windows 10 będzie miał zarówno wersję 8.0, jak i 9.0 (odpowiednio VC 2005 i VC 2008). Po zainstalowaniu dodatkowego oprogramowania może ono również zawierać nowsze wersje środowisk wykonawczych, w zależności od tego, która wersja Visual C++ została użyta do utworzenia programu lub któregokolwiek z jego składników.

Błędy uruchomieniowe

W przypadku napotkania błędu lub wyjątku w fragmencie kodu najlepiej byłoby, gdyby został on obsłużony tak szybko, jak to możliwe w aktualnie wykonywanej procedurze i albo zostanie poprawiony, albo zezwoli na niepowodzenie. Jeśli błąd nie jest obsługiwany lokalnie, jest przekazywany do kodu, który wywołał aktualnie wykonywany kod, a proces jest kontynuowany do momentu obsłużenia wyjątku. Jeśli zakończy bieg do szczytu łańcucha i nadal nie zostanie obsłużony, wygeneruje błąd w czasie wykonywania, jak pokazano powyżej.

Gdy użytkownik kliknie przycisk OK, proces zostanie zakończony. Jeśli program ma zdefiniowane zachowanie awaryjne, takie jak krytyczne usługi, lub jego stan działania jest monitorowany przez inny proces, może zostać automatycznie odrodzony. Tak właśnie dzieje się w tym przypadku. Ekran wygasa po zakończeniu procesu explorer.exe, a pulpit powraca po ponownym uruchomieniu procesu explorer.exe.

Chociaż powyższy komunikat o błędzie wyraźnie wskazuje, że pochodzi on z procesu explorer.exe, nie jest to prawdopodobnie problem z samym explorer.exe. O wiele bardziej prawdopodobne jest, że winowajca leży gdzie indziej, na przykład w zewnętrznym rozszerzeniu używanym przez Explorer.

Inne względy

W powyższym opisie problemu przez naszego czytelnika jest kilka dodatkowych elementów, które musimy wziąć pod uwagę:

  • W czasie awarii Explorer próbował, ale nie był w stanie wypełnić widoku listy.
  • Brak dostępu do dysków po odrodzeniu pulpitu może wskazywać, że inny proces ma zablokowane co najmniej jedno z tych urządzeń, co uniemożliwia dostęp nowo utworzonemu procesowi explorer.exe.
  • Bieganie sfc /skanuj i uzyskanie czystego rachunku zdrowia powoduje, że zasoby chronione systemem Windows są umieszczane na dole listy do rozważenia. Inne przyczyny są znacznie bardziej prawdopodobne.

Poprawki są w

W tym konkretnym przypadku są trzy obszary, w których szukałbym rozwiązania. Pierwsza dotyczy usługi Windows Search, druga obejmuje badanie rozszerzeń powłoki, a ostatnia dotyczy samych pakietów redystrybucyjnych VC++.

Ponieważ oryginalny zrzut ekranu pokazuje awarię występującą, gdy Eksplorator próbuje wypełnić widok listy, możliwe, że usługa wyszukiwania systemu Windows blokuje dostęp do wymaganych zasobów. Widziałem, jak to się dzieje, gdy usługa się zawiesza i nie ma poprawnych parametrów restartu.

naciskać Wygraj+R > rodzaj services.msc > OK aby uruchomić konsolę zarządzania z modułem usług. Przewiń w dół do wyszukiwania systemu Windows i kliknij dwukrotnie wpis, aby otworzyć okno dialogowe Właściwości. Upewnij się, że ustawienia na karcie Odzyskiwanie odpowiadają poniższemu obrazowi.

Najczęstszym problemem jest ustawienie „Uruchom ponownie usługę po:”. Ten błąd często występuje, gdy to ustawienie jest różne od zera.

Problematyczne rozszerzenia powłoki

Pobierać ShellExView firmy Nirsoft dla swojej architektury systemu (x86 lub x64), zainstaluj i uruchom. Sprawdzenie systemu i wypełnienie tabeli danymi zajmie trochę czasu. Przewiń do kolumny CLSID Modified Time i kliknij nagłówek, aby posortować według tego pola. Jeśli chcesz wykluczyć moduły dostarczone przez Microsoft, możesz przejść do Opcje > Ukryj wszystkie rozszerzenia Microsoft . Dla osób korzystających z 64-bitowej wersji systemu Windows możesz również wyświetlić 32-bitowe rozszerzenia w systemie, przechodząc do Opcje > Pokaż 32-bitowe rozszerzenia powłoki .

Poszukaj rozszerzeń, które zostały dodane tuż przed wystąpieniem objawów. Wybierz jeden lub więcej i naciśnij F7 lub idź do Plik > Wyłącz wybrane elementy lub kliknij ikonę czerwonej diody LED na pasku narzędzi. Najlepiej byłoby robić to pojedynczo.

Sprawdź, czy objawy utrzymują się. Jeśli tak, możesz ponownie włączyć wcześniej wyłączone rozszerzenia, używając F8 , Plik > Włącz wybrane elementy lub zielona ikona paska narzędziowego LED. W tym miejscu wyłącz inne rozszerzenie i powtarzaj proces testowania, aż znajdziesz to, które powoduje problem.

Napraw/ponownie zainstaluj pakiety redystrybucyjne VC++

Używam tego w ostateczności, jeśli tylko jeden program wyrzuca błędy. Jeśli masz wiele programów, które mają problemy z błędami środowiska wykonawczego VC ++, możesz spróbować najpierw tego.

Patrząc na zainstalowane programy w moim systemie ( Panel sterowania > Programy i funkcje ), pokazuje wszystkie wersje pakietów redystrybucyjnych (i niektóre ich aktualizacje) od wersji 8 do wersji 12 (VC++ 2005 do VC++ 2013). Mam je zainstalowane ze względu na używane przeze mnie narzędzia programistyczne Microsoft. Większość użytkowników nie będzie miała ich wszystkich.

Możesz znaleźć najnowsze pliki do pobrania dla obsługiwanych wersji Visual C++ od firmy Microsoft. Dla naszych celów tutaj musisz zajmować się tylko tymi, które są oznaczone jako pakiety „redystrybucyjne”. Łącza sklasyfikowane jako dodatki Service Pack dotyczą narzędzi programistycznych, a nie tylko środowisk wykonawczych. Będziesz potrzebować tylko tych, które są aktualnie wymienione w zainstalowanych programach w twoim systemie. Zainstalowanie innych wersji nie pomoże w tym przypadku. Użytkownicy 64-bitowych systemów operacyjnych mogą potrzebować zarówno wersji x86, jak i x64 CRT.

Usługa Windows Update sprawdza, czy na komputerze są zainstalowane najnowsze aktualizacje tych pakietów, ale nie sprawdza, czy jest prawidłowo zainstalowana i czy nie została uszkodzona. Instalatorzy mogą sprawdzić, czy wszystkie pliki uruchomieniowe są prawidłowe, a wszystkie wpisy rejestru są poprawne.

Po pobraniu odpowiednich instalatorów uruchom je w systemie. Wersje 2005 wyświetlają monit o zaakceptowanie umowy licencyjnej przed ponowną instalacją pakietu. Wszystkie inne mają GUI, który zapyta, czy chcesz naprawić lub odinstalować istniejącą instalację. W większości przypadków naprawa naprawi wszelkie problemy.

Jeśli chcesz wypróbować najbardziej ekstremalną metodę, możesz odinstalować środowiska wykonawcze, ponownie uruchomić komputer, a następnie zainstalować je ponownie. Nie polecam tej metody w środowiskach wykonawczych 2005 i 2008. Bez nich system Windows wygeneruje wiele błędów i wiele funkcji nie będzie dostępne po ponownym uruchomieniu.

Wniosek

Przy odrobinie obserwacji, odrobinie prób i błędów oraz zrozumieniu, w jaki sposób błędy są generowane przez środowiska wykonawcze w systemie, problemy z oprogramowaniem można znaleźć i rozwiązać bez uciekania się do skomplikowanych narzędzi do debugowania i dzienników.

Czy napotkałeś błędy uruchomieniowe w swoim systemie? Co było potrzebne do ich rozwiązania? Daj mi znać w komentarzach poniżej.

Udział Udział Ćwierkać E-mail Oto dlaczego FBI wydało ostrzeżenie dotyczące Hive Ransomware

FBI wydało ostrzeżenie o szczególnie paskudnym szczepie oprogramowania ransomware. Oto dlaczego należy szczególnie uważać na oprogramowanie ransomware Hive.

Czytaj dalej
Powiązane tematy
  • Okna
  • Wyjaśnienie technologii
  • Zapytaj ekspertów
  • Eksplorator Windows
  • Okna
  • Przeglądarka plików
  • Wyszukiwanie systemu Windows
  • Rozwiązywanie problemów
O autorze Bruce Epper(13 opublikowanych artykułów)

Bruce bawi się elektroniką od lat 70., komputerami od wczesnych lat 80. i trafnie odpowiada na pytania dotyczące technologii, których przez cały czas nie używał i nie widział. On też denerwuje się, próbując grać na gitarze.

Więcej od Bruce'a Eppera

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować