Reklama
Udostępniane biblioteki w systemie Windows znacznie zwiększają wydajność programowania dla programisty, który nie musi wymyślać koła za każdym razem, gdy musi wykonać wspólne zadanie. Ułatwiają także wypełnianie dziur bezpieczeństwa we współdzielonym kodzie, gdy zostaną znalezione, ponieważ należy go załatać 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ć pierwotną przyczynę generowanych komunikatów o błędach.
Pytanie naszego czytelnika:
Jak rozwiązać problem 32-bitowego systemu Windows Vista C: \ Windows \ explorer.exe w systemie Windows Vista w komputerze Dell Inspiron 530?
Po kliknięciu przycisku OK w oknie dialogowym pokazanym na zrzucie ekranu ekran zaczernia i wraca do normy działa, ale nie pozwoli mi uzyskać dostępu do C, D, a czasami do dysku E, gdy próbuję uzyskać do nich dostęp z Mojego Komputer.
Bieganie sfc / scannow nie znajduje żadnych błędów. Pobrałem aktualizacje z witryn Dell i Microsoft, próbując rozwiązać ten problem. Zainstalowałem także 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 istnieje między nimi zauważalna różnica, zostanie to wyraźnie stwierdzone.
Powłoka systemu Windows
Eksplorator Windows jest powłoka i działa jako proces explorer.exe, jak widać w Menedżerze zadań lub Eksplorator procesów Sysinternals Process Explorer - najpotężniejsza wymiana Menedżera zadań [Windows]Bądźmy szczerzy, Menedżer zadań Windows nie jest świetny do zrozumienia i zarządzania procesami uruchomionymi na twoim komputerze. Nawet w Windows 8, gdzie jest znacznie ulepszony, menedżer zadań nie może zbliżyć się do ... Czytaj więcej . Podobnie jak wiele innych programów systemu Windows, cała funkcjonalność zapewniana przez powłokę nie jest zawarta w tym pojedynczym pliku wykonywalnym. Istnieją dziesiątki innych plików EXE i Pliki DLL Jak naprawić błędy związane z brakującymi plikami DLL Czytaj więcej Służy do implementacji arkuszy właściwości, procedur obsługi właściwości, procedur podglądu, menu kontekstowych i wielu innych elementów, z których codziennie korzystasz w Eksploratorze Windows.
Rozszerzalna skorupa
Rozszerzenia powłoki pozwalają programistom łatwo dodawać funkcje do Eksploratora Windows, pisząc bibliotekę DLL do wykonania zadanie i rejestracja biblioteki DLL w systemie operacyjnym, aby Eksplorator wiedział, gdzie znaleźć kod do wykonania zadanie. Na przykład, 7-Zip Jak wyodrębnić pliki z ZIP, RAR, 7z i innych popularnych archiwówCzy kiedykolwiek miałeś do czynienia z plikiem .rar i zastanawiałeś się, jak go otworzyć? Na szczęście zarządzanie plikami ZIP i innymi skompresowanymi archiwami jest proste dzięki odpowiednim narzędziom. Oto, co musisz wiedzieć. Czytaj więcej dodaje podmenu do standardowego menu kontekstowego, zapewniając szybki dostęp do zadań związanych z obsługą archiwów, Sentinel dysku twardego Miej oko na zdrowie swojego HDD i SSD dzięki Hard Disk SentinelCzy kiedykolwiek miałeś awarię dysku? Niestety nie ma panaceum na zapobieganie uszkodzeniom sprzętu. Ale pierwszym krokiem jest monitorowanie dysku twardego lub dysku SSD w celu podjęcia działań, gdy ich śmierć stanie się prawdopodobna. Czytaj więcej dodaje nakładki ikon do standardowych ikon dysków, dzięki czemu można na pierwszy rzut oka zobaczyć stan dysku i HashTab dodaje nowy arkusz właściwości do obliczania i wyświetlania skrótów wybranego pliku.
Wiele z tych rozszerzeń powłoki jest zaimplementowanych jako serwery COM (Process Component Object Model). Oznacza to, że gdy proces, w tym przypadku Eksplorator Windows, użyje rozszerzenia, nie pojawi się w Menedżerze zadań lub Eksploratorze procesów jako osobny działający proces z własnym identyfikatorem procesu (PID). Zamiast tego wykonuje się w procesie wywołującym explorer.exe.
Domyślny proces pojedynczej instancji
Eksplorator Windows jest napisany tak, aby mógł działać jako dwa osobne procesy, ale - w domyślnej konfiguracji - uruchomi tylko jedną instancję. Kiedy jest uruchamiany po raz pierwszy jako część procesu uruchamiania, tworzy środowisko pulpitu Windows. Ponowne uruchomienie powoduje utworzenie nowego wątku w istniejącym procesie, który wyświetla znane okno zarządzania plikami, zamiast rozpoczynania nowego procesu.
Takie zachowanie pozwala zmniejszyć zużycie pamięci, ale może również przynieść własny zwrot podczas rozwiązywania problemów. Błąd krytyczny lub nieobsługiwany wyjątek w kodzie wykonywanym w procesie explorer.exe, w tym w serwerach wewnątrzprocesowych dostarczanych przez biblioteki DLL, spowoduje, że całe środowisko pulpitu ulegnie awarii.
W większości przypadków proces pulpitu zostanie automatycznie ponownie uruchomiony. Jeśli się nie uruchomi ponownie, nadal możesz użyć Ctrl-Shift-Esc, aby uruchomić Menedżera zadań. Stamtąd przejdź do Plik> Nowe zadanie (Uruchom…)> rodzaj explorer.exe> OK aby ponownie uruchomić proces.
Można tego uniknąć za pomocą prostej zmiany. otwarty Windows Explorer> Organizuj> Opcje folderów i wyszukiwania w Vista / 7. W systemie Windows 8 i nowszych otwórz Eksplorator plików> Widok> Opcje> Zmień opcje folderów i wyszukiwania. Wybierz Zobacz kartę i zaznacz Uruchom okna folderów w osobnym procesie.
Zmiana tego ustawienia izoluje proces pulpitu od wszystkich innych otwartych okien Eksploratora Windows. Jeśli którekolwiek z tych okien Eksploratora ulegnie awarii, pulpit pozostanie nienaruszony.
Biblioteka uruchomieniowa Microsoft Visual C ++ (CRT)
Biblioteka uruchomieniowa Microsoft Visual C ++ udostępnia procedury programowania systemu Windows, które automatyzują wiele zadań, takich jak wprowadzanie / wyprowadzanie, manipulowanie plikami, przydzielanie pamięci, wywołania systemowe i wiele innych.
Każda instalacja systemu Windows będzie mieć zainstalowane co najmniej dwie różne wersje CRT. Świeżo zbudowany Vista SP2 na komputerze z systemem Windows 10 będzie zawierał zarówno wersje 8.0, jak i 9.0 (odpowiednio VC 2005 i VC 2008). Po zainstalowaniu dodatkowego oprogramowania może również zawierać nowsze wersje środowisk wykonawczych, w zależności od wersji Visual C ++ użytej do utworzenia programu lub dowolnego z jego składników.
Błędy czasu wykonania
Gdy napotkany zostanie błąd lub wyjątek w kodzie, najlepiej zostanie on obsłużony jak najszybciej możliwe w aktualnie wykonywanej procedurze i albo zostać poprawione, albo pozwolić na wdzięczność niepowodzenie. Jeśli błąd nie jest obsługiwany lokalnie, zostaje przekazany do kodu, który wywołał aktualnie wykonywany kod, i proces jest kontynuowany do momentu obsłużenia wyjątku. Jeśli zakończy bieg na szczyt łańcucha i nadal nie będzie obsługiwany, wygeneruje błąd czasu wykonywania, jak pokazano powyżej.
Gdy użytkownik kliknie przycisk OK, proces zostanie zakończony. Jeśli program ma zdefiniowane zachowanie awaryjne, takie jak usługi krytyczne lub jego stan uruchamiania jest monitorowany przez inny proces, może on zostać automatycznie odrodzony. Tak dzieje się w tym przypadku. Ekran gaśnie po zakończeniu procesu explorer.exe, a następnie pulpit wraca po ponownym uruchomieniu procesu explorer.exe.
Chociaż powyższy komunikat o błędzie wyraźnie wskazuje, że pochodzi on z procesu explorer.exe, prawdopodobnie nie jest to problem z samym plikiem explorer.exe. O wiele bardziej prawdopodobne jest, że winowajcą jest gdzie indziej, na przykład rozszerzenie innej firmy używane przez Explorera.
Inne uwagi
W powyższym opisie problemu naszego czytelnika istnieje kilka dodatkowych elementów, które musimy wziąć pod uwagę:
- W czasie awarii Explorer próbował zapełnić widok listy, ale nie był w stanie go wypełnić.
- Brak możliwości dostępu do dysków po odrodzeniu pulpitu może wskazywać na inny proces lub więcej tych urządzeń zablokowanych, uniemożliwiając w ten sposób dostęp do nowo utworzonego explorer.exe proces.
- Bieganie sfc / scannow i uzyskanie czystego stanu zdrowia, powoduje, że zasoby chronione przez system Windows znajdują się na dole listy do rozważenia. Inne przyczyny są znacznie bardziej prawdopodobne.
Wprowadzono poprawki
W tym konkretnym przypadku są trzy obszary, w których szukałbym rozwiązania. Pierwszy dotyczy usługi wyszukiwania systemu Windows, drugi polega na badaniu rozszerzeń powłoki, a ostatni na samych redystrybucjach VC ++.
Wyszukiwanie systemu Windows
Ponieważ oryginalny zrzut ekranu pokazuje awarię, gdy Explorer próbuje zapełnić W widoku listy możliwe jest, że usługa wyszukiwania systemu Windows blokuje dostęp do wymaganych zasobów. Widziałem, jak to się dzieje, gdy usługa ulega awarii i nie ma poprawnych parametrów restartu.
naciśnij Win + R> rodzaj services.msc> OK aby uruchomić konsolę zarządzania z modułem usług. Przewiń w dół do Wyszukiwarki Windows i kliknij dwukrotnie pozycję, aby otworzyć okno dialogowe Właściwości. Upewnij się, że ustawienia na karcie Odzyskiwanie są zgodne z obrazem poniżej.
Najczęstszym problemem jest ustawienie „Uruchom ponownie usługę po:”. Ten błąd często występuje, gdy to ustawienie jest niezerowe.
Problematyczne rozszerzenia powłoki
Pobieranie ShellExView firmy Nirsoft dla architektury systemu (x86 lub x64) zainstaluj i uruchom ją. Zajmie trochę czasu, aby zbadać system i wypełnić tabelę danymi. Przewiń do kolumny Zmodyfikowany czas CLSID 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. Jeśli używasz 64-bitowej wersji systemu Windows, możesz również chcieć 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 przejdź do Plik> Wyłącz wybrane elementylub kliknij czerwoną ikonę LED na pasku narzędzi. Najlepiej byłoby to zrobić pojedynczo.
Sprawdź, czy objawy się utrzymują. Jeśli tak, możesz ponownie włączyć wcześniej wyłączone rozszerzenia za pomocą F8, Plik> Włącz wybrane elementylub zielona ikona paska narzędzi LED. Stąd wyłącz inne rozszerzenie i powtarzaj proces testowania, aż znajdziesz to, które powoduje problem.
Napraw / zainstaluj ponownie składniki redystrybucyjne VC ++
Używam tego jako ostateczności, jeśli tylko jeden program wykopuje błędy. Jeśli masz wiele programów, które mają problemy z błędami środowiska wykonawczego VC ++, możesz spróbować najpierw.
Przeglądając zainstalowane programy w moim systemie (Panel sterowania> Programy i funkcje), pokazuje każdą wersję pakietów redystrybucyjnych (i niektóre ich aktualizacje), od wersji 8 do wersji 12 (VC ++ 2005 do VC ++ 2013). Mam je zainstalowane z powodu używanych przeze mnie narzędzi programistycznych Microsoft. Większość użytkowników nie ma ich wszystkich.
Możesz znaleźć najnowsze pliki do pobrania dla obsługiwanych wersji programu Visual C ++ od Microsoft. Do naszych celów musisz się zajmować tylko tymi, które są oznaczone jako pakiety „redystrybucyjne”. Łącza sklasyfikowane jako dodatki Service Pack służą do narzędzi programistycznych, a nie tylko środowisk wykonawczych. Będziesz potrzebował tylko tych, które są obecnie wymienione w zainstalowanych programach w twoim systemie. Instalacja innych wersji nie pomoże w tym przypadku. Użytkownicy 64-bitowych systemów operacyjnych mogą potrzebować zarówno wersji CRT x86, jak i x64.
Usługa Windows Update sprawdza, czy na komputerze są zainstalowane najnowsze aktualizacje tych pakietów, ale nie sprawdza, czy jest poprawnie zainstalowana i czy nie została uszkodzona. Instalatorzy mogą sprawdzić, czy wszystkie pliki środowiska wykonawczego są prawidłowe, a wszystkie wpisy rejestru są prawidłowe.
Po pobraniu odpowiednich instalatorów uruchom je w systemie. Wersje z 2005 r. Monitują o zaakceptowanie umowy licencyjnej przed ponowną instalacją pakietu. Wszystkie pozostałe mają GUI, które zapyta, czy chcesz naprawić lub odinstalować istniejącą instalację. W większości przypadków operacja naprawy naprawi wszelkie problemy.
Jeśli chcesz wypróbować najbardziej ekstremalną metodę, możesz odinstalować środowiska wykonawcze, ponownie uruchomić komputer, a następnie ponownie zainstalować. Nie polecam tej metody w środowiskach uruchomieniowych 2005 i 2008. Bez nich system Windows wygeneruje wiele błędów, a po zrestartowaniu nie będzie wielu funkcji.
Wniosek
Z odrobiną obserwacji, odrobiną prób i błędów oraz pewnym zrozumieniem, w jaki sposób generowane są błędy środowiska wykonawczego w systemie, problemy z oprogramowaniem można znaleźć i rozwiązać bez uciekania się do skomplikowanych narzędzi do debugowania i logi.
Czy wystąpiły błędy w czasie wykonywania w systemie? Co było potrzebne do ich rozwiązania? Daj mi znać w komentarzach poniżej.
Bruce bawi się elektroniką od lat 70., komputerami od wczesnych lat 80. i dokładnie odpowiada na pytania dotyczące technologii, z których nie korzystał ani nie widział przez cały czas. Drażni się także próbą gry na gitarze.