Jak opravit chyby runtime systému Windows Visual C ++

Jak opravit chyby runtime systému Windows Visual C ++

Sdílené knihovny ve Windows dělají programování mnohem efektivnějším pro programátora, který nepotřebuje znovu objevit kolo pokaždé, když potřebuje provést společný úkol. Také usnadňují zasunutí bezpečnostních děr do sdíleného kódu, když jsou nalezeny, protože je třeba je opravit na méně místech a nevyžaduje, aby byla každá aplikace překompilována.





Navzdory těmto pozitivním aspektům mohou při pokusu o řešení hlavní příčiny chybových zpráv, které mohou generovat, představovat své vlastní problémy.





Otázka našeho čtenáře:

Jak vyřeším problém se systémem Windows Vista 32bitovým C: Windows explorer.exe na počítači Dell Inspiron 530?





Po kliknutí na tlačítko OK v dialogu zobrazeném na snímku obrazovky obrazovka zčerná a vrátí se k normálnímu běhu, ale nedovolí mi při pokusu o přístup k jednotkám C, D a někdy ani k jednotce E. z tohoto počítače.

Běh sfc /scannow nenalezne žádné chyby. Ve snaze vyřešit tento problém jsem stáhl aktualizace z webů Dell i Microsoft. Také jsem nainstaloval redistribuovatelný balíček Microsoft Visual C ++ 2010 (x86). Počítač je podle Windows Update zcela aktuální.



Bruceova odpověď:

Poznámka: Diskuse o Průzkumníkovi Windows v systému Windows 7 a starších verzích platí také pro Průzkumník souborů ve Windows 8 a novějších verzích. Pokud je mezi nimi výrazný rozdíl, bude to výslovně uvedeno.

Prostředí Windows

Průzkumník Windows je shell a běží jako proces explorer.exe, jak je vidět ve Správci úloh nebo v Průzkumníku procesů Sysinternals. Stejně jako mnoho jiných programů pro Windows nejsou všechny funkce poskytované shellem začleněny do jediného spustitelného souboru. K implementaci listů vlastností, obslužných rutin vlastností, obslužných programů náhledů, kontextových nabídek a mnoha dalších prvků, které používáte v Průzkumníku Windows, existují desítky dalších souborů EXE a DLL.





Rozšiřitelná skořepina

Rozšíření prostředí umožňují programátorům snadno přidávat funkce do Průzkumníka Windows napsáním knihovny DLL k provedení úkolu a registrací knihovny DLL v operačním systému, aby Průzkumník věděl, kde najít kód pro splnění úkolu. Například, 7-zip přidává do standardní kontextové nabídky podnabídku, která poskytuje rychlý přístup k úlohám zpracování archivu, pevný disk Sentinel přidává k ikonám standardní jednotky překryvy ikon, takže můžete na první pohled vidět stav disku a HashTab přidá nový list vlastností pro výpočet a zobrazení hash vybraného souboru.

Mnoho z těchto rozšíření prostředí je implementováno jako servery COM (Process Object Component Object Model). To znamená, že když proces, v tomto případě Průzkumník Windows, používá rozšíření, nezobrazí se ve Správci úloh nebo Průzkumníku procesů jako samostatný spuštěný proces s vlastním identifikátorem procesu (PID). Místo toho se provádí uvnitř procesu volání explorer.exe.





Výchozí proces s jednou instancí

Průzkumník Windows je napsán tak, aby mohl běžet jako dva samostatné procesy, ale - ve své výchozí konfiguraci - spustí pouze jednu instanci. Při prvním spuštění v rámci procesu spouštění vytvoří desktopové prostředí Windows. Opětovné spuštění vytvoří nové vlákno ve stávajícím procesu, který místo spuštění nového procesu zobrazí známé okno pro správu souborů.

Toto chování umožňuje menší nároky na paměť, ale může také přinést malý zvrat při řešení problémů. Kritická chyba nebo neošetřená výjimka v kódu, který se spouští v procesu explorer.exe, včetně serverů v procesu poskytovaných knihovnami DLL, způsobí, že s ním půjde celé pracovní prostředí.

Ve většině případů se proces plochy automaticky restartuje. Pokud se nerestartuje, měli byste být stále schopni použít Ctrl-Shift-Esc k vyvolání Správce úloh. Odtud přejděte na Soubor> Nový úkol (Spustit ...)> typ explorer.exe> ​​OK restartujte proces.

Tomu se lze vyhnout jednoduchou změnou. Otevřeno Průzkumník Windows> Uspořádat> Možnosti složky a hledání ve Windows Vista/7. V systému Windows 8 a novějších otevřete Průzkumník souborů> Zobrazit> Možnosti> Změnit možnosti složky a hledání . Vybrat Karta Zobrazit a zkontrolujte Spusťte okna složek v samostatném procesu .

jak odstranit účet ps4

Změna tohoto nastavení izoluje proces na ploše od všech ostatních otevřených oken Průzkumníka Windows. Pokud dojde k selhání některého z těchto oken Průzkumníka, zůstane vaše pracovní plocha bez poškození.

Microsoft Visual C ++ Runtime Library (CRT)

Microsoft Visual C ++ Runtime Library poskytuje rutiny pro programování systému Windows, které automatizují mnoho úkolů, jako je vstup/výstup, manipulace se soubory, přidělování paměti, systémová volání a mnoho dalších.

Každá instalace systému Windows bude mít nainstalovány alespoň dvě různé verze CRT. Nově postavený počítač Vista SP2 prostřednictvím systému Windows 10 bude mít verzi 8.0 i 9.0 (VC 2005 a VC 2008, v uvedeném pořadí). Když je nainstalován další software, může také zahrnovat novější verze modulů runtime v závislosti na tom, která verze Visual C ++ byla použita k vytvoření programu nebo jakékoli jeho součásti.

Chyby runtime

Pokud v části kódu dojde k chybě nebo výjimce, bude v ideálním případě zpracována co nejdříve v aktuálně prováděném postupu a bude buď opravena, nebo umožní ladné selhání. Pokud chyba není zpracována místně, bude předána do kódu, který volal aktuálně provádějící kód, a proces pokračuje, dokud není zpracována výjimka. Pokud dokončí svůj běh na začátek řetězce a stále není zpracován, vygeneruje chybu za běhu, jak je vidět výše.

Když uživatel klikne na tlačítko OK, proces bude ukončen. Pokud má program definované chování při selhání, například kritické služby, nebo je stav jeho běhu monitorován jiným procesem, může být automaticky respawnován. To se v tomto případě děje. Po ukončení procesu explorer.exe obrazovka zčerná, poté se pracovní plocha vrátí po restartování procesu explorer.exe.

Ačkoli výše uvedená chybová zpráva jasně naznačuje, že pochází z procesu explorer.exe, není pravděpodobné, že by to byl problém samotného explorer.exe. Je mnohem pravděpodobnější, že viník leží jinde, například v rozšíření třetí strany, které používá Explorer.

Další úvahy

S výše uvedeným popisem problému naším čtenářem je třeba vzít v úvahu několik dalších položek:

  • V době havárie se Explorer pokoušel, ale nemohl, naplnit zobrazení seznamu.
  • Neschopnost přistupovat k jednotkám poté, co se plocha respawnuje, může znamenat, že jiný proces má jedno nebo více těchto zařízení uzamčeno, což brání přístupu z nově vytvořeného procesu explorer.exe.
  • Běh sfc /scannow a získání čistého zdravotního stavu přenese prostředky chráněné systémem Windows na konec seznamu na zvážení. Jiné příčiny jsou mnohem pravděpodobnější.

Opravy jsou v

V tomto konkrétním případě existují tři oblasti, kde bych hledal řešení. První zahrnuje službu Windows Search, druhá zahrnuje zkoumání rozšíření shellu a poslední by byly samotné redistribuovatelné soubory VC ++.

Protože původní snímek obrazovky ukazuje, že došlo k chybě, když se Průzkumník pokouší naplnit zobrazení seznamu, je možné, že služba Windows Search blokuje přístup k požadovaným prostředkům. Viděl jsem, že k tomu dochází, když služba havaruje a nemá správné parametry restartu.

lis Win+R> typ services.msc> OK spusťte konzolu pro správu pomocí modulu služeb. Přejděte dolů na Windows Search a poklepáním na položku otevřete dialogové okno Vlastnosti. Zajistěte, aby nastavení na kartě Obnovení odpovídalo obrázku níže.

Nejčastějším problémem je nastavení „Restartovat službu po:“. K této chybě často dochází, když je toto nastavení nenulové.

Problematické rozšíření skořepiny

Stažení Nirsoft's ShellExView pro architekturu vašeho systému (x86 nebo x64) jej nainstalujte a spusťte. Prozkoumání systému a naplnění tabulky daty bude chvíli trvat. Přejděte přes sloupec CLSID Modified Time a kliknutím na záhlaví seřaďte v tomto poli. Pokud chcete vyloučit moduly poskytované společností Microsoft, můžete přejít na Možnosti> Skrýt všechna rozšíření Microsoft . Pro ty, kteří používají 64bitovou verzi systému Windows, můžete také chtít zobrazit 32bitová rozšíření v systému tím, že přejdete na Možnosti> Zobrazit 32bitová rozšíření prostředí .

Vyhledejte rozšíření, která byla přidána těsně před začátkem příznaků. Vyberte jednu nebo více a stiskněte F7 nebo jdi na Soubor> Zakázat vybrané položky nebo klikněte na červenou ikonu LED na panelu nástrojů. V ideálním případě by to mělo být provedeno jeden po druhém.

Otestujte, zda příznaky přetrvávají. Pokud ano, můžete dříve povolená rozšíření znovu povolit pomocí F8 , Soubor> Povolit vybrané položky nebo ikona zelené lišty LED. Odtud deaktivujte jiné rozšíření a opakujte proces testování, dokud nenajdete ten, který způsobuje problém.

Opravte/přeinstalujte znovu distribuovatelné soubory VC ++

Používám to jako poslední možnost, pokud pouze jeden program vykopává chyby. Pokud máte více programů, které mají problémy s chybami runtime VC ++, můžete to zkusit jako první.

Při pohledu na nainstalované programy v mém systému ( Ovládací panely> Programy a funkce ), ukazuje každou verzi redistribuovatelných balíčků (a některé jejich aktualizace) od verze 8 až po verzi 12 (VC ++ 2005 až VC ++ 2013). Mám je nainstalované kvůli programovacím nástrojům Microsoftu, které používám. Většina uživatelů nebude mít všechny tyto položky.

Můžete najít nejnovější soubory ke stažení pro podporované verze Visual C ++ od společnosti Microsoft. Pro naše účely se zde musíte zabývat pouze těmi, které jsou označeny jako „redistribuovatelné“ balíčky. Odkazy, které jsou klasifikovány jako aktualizace Service Pack, jsou určeny pro programovací nástroje, nikoli pouze pro doby běhu. Budete potřebovat pouze ty, které jsou aktuálně uvedeny v nainstalovaných programech ve vašem systému. Instalace dalších verzí v tomto případě nepomůže. Uživatelé 64bitových operačních systémů mohou potřebovat verze CRT x86 i x64.

Služba Windows Update zkontroluje, zda má váš počítač nainstalované nejnovější aktualizace pro tyto balíčky, ale nekontroluje, zda je správně nainstalován a zda nebyl poškozen. Instalační programy mohou zkontrolovat, zda jsou všechny běhové soubory správné a zda jsou všechny položky registru správné.

Jakmile si stáhnete příslušné instalační programy, spusťte je v systému. Verze 2005 vás před přeinstalováním balíčku vyzve k přijetí licenční smlouvy. Všechny ostatní mají grafické uživatelské rozhraní, které se vás zeptá, zda chcete stávající instalaci opravit nebo odinstalovat. Ve většině případů opravná operace vyřeší všechny problémy.

Pokud chcete vyzkoušet nejextrémnější metodu, můžete runtime odinstalovat, restartovat počítač a poté je znovu nainstalovat. Nedoporučuji tuto metodu s běhy 2005 a 2008. Bez nich bude systém Windows generovat mnoho chyb a mnoho funkcí při restartu nebude k dispozici.

Závěr

S trochou pozorování, nádechem pokusů a omylů a určitým porozuměním tomu, jak jsou chyby generovány z běhů systému, lze problémy se softwarem najít a vyřešit, aniž bychom se museli uchylovat ke komplikovaným nástrojům a protokolům pro ladění.

Došlo ve vašem systému k běhovým chybám? Co bylo potřeba k jejich vyřešení? Dejte mi vědět v komentářích níže.

Podíl Podíl tweet E-mailem Zde je důvod, proč FBI vydala varování pro ransomware Hive

FBI vydala varování před obzvláště ošklivým kmenem ransomwaru. Zde je důvod, proč byste si měli dávat pozor zejména na ransomware Hive.

Číst dále
Související témata
  • Okna
  • Technologie vysvětlena
  • Zeptejte se odborníků
  • Průzkumník Windows
  • Okna
  • Průzkumník souborů
  • Windows Search
  • Odstraňování problémů
O autorovi Bruce Epper(13 článků zveřejněno)

Bruce si hraje s elektronikou od 70. let, s počítači od počátku 80. let a přesně odpovídá na otázky o technologii, kterou po celou dobu nepoužíval ani neviděl. Také se obtěžuje pokusem hrát na kytaru.

Více od Bruce Eppera

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru