Как да поправите грешките по време на работа на Windows Visual C ++

Как да поправите грешките по време на работа на Windows Visual C ++

Споделените библиотеки в Windows правят програмирането много по -ефективно за програмиста, който няма нужда да преоткрива колелото всеки път, когато трябва да изпълни обща задача. Те също така улесняват включването на дупки в сигурността в споделения код, когато бъдат открити, тъй като той трябва да бъде закърпен на по -малко места и не изисква всяко приложение да се прекомпилира.





Въпреки тези положителни аспекти, те могат да създадат свои собствени проблеми, когато се опитват да отстранят основната причина за съобщенията за грешки, които могат да генерират.





Въпрос на нашия читател:

Как да поправя 32-битов проблем с Windows Vista C: Windows explorer.exe на Dell Inspiron 530?





След като щракнете върху бутона OK в диалоговия прозорец, показан на екранната снимка, екранът ще потъмнее и ще се върне към нормалното функциониране, но няма да ми позволи достъп до C, D и понякога E устройството, когато се опитвам да получа достъп до тях от Моят компютър.

Бягане sfc /scannow не открива грешки Изтеглих актуализации както от уебсайтовете на Dell, така и от Microsoft, опитвайки се да отстраня този проблем. Инсталирах и Microsoft Visual C ++ 2010 Redistributable Package (x86). Компютърът е напълно актуален според Windows Update.



Отговорът на Брус:

Забележка: Дискусиите за Windows Explorer в Windows 7 и по -ранните версии се отнасят и за File Explorer в Windows 8 и по -нови версии. Ако има забележима разлика между тях, тя ще бъде изрично посочена.

Черупката на Windows

Windows Explorer е черупката и работи като процеса explorer.exe, както се вижда в диспечера на задачите или Process Explorer на Sysinternals. Подобно на много други програми на Windows, всички функции, предоставени от черупката, не са включени в този единствен изпълним файл. Има десетки други EXE и DLL файлове, използвани за внедряване на листове със свойства, манипулатори на свойства, манипулатори за визуализация, контекстни менюта и много други елементи, които използвате в Windows Explorer всеки ден.





Разтегателна обвивка

Разширенията на Shell позволяват на програмистите лесно да добавят функционалност към Windows Explorer, като напишат DLL за изпълнение на задачата и регистрират DLL в операционната система, така че Explorer знае къде да намери кода за изпълнение на задачата. Например, 7-цип добавя подменю към стандартното контекстно меню, което дава бърз достъп до задачи за обработка на архиви, Sentinel на твърдия диск добавя наслагвания на икони към стандартните икони на устройството, така че можете да видите състоянието на здравето на устройството с един поглед и HashTab добавя нов лист със свойства, за да изчисли и покаже хешовете на избрания файл.

Много от тези разширения на черупката са реализирани като сървъри на компонентни обектни модели (COM) в процеса. Това означава, че когато процес, в този случай Windows Explorer, използва разширението, той няма да се появи в Task Manager или Process Explorer като отделен работещ процес със собствен идентификатор на процес (PID). Вместо това той се изпълнява в процеса на извикване explorer.exe.





Процес по едноинстанция по подразбиране

Windows Explorer е написан да може да работи като два отделни процеса, но - в конфигурацията си по подразбиране - ще изпълнява само един екземпляр. Когато се изпълнява за първи път като част от процеса на стартиране, той създава работната среда на Windows. Изпълнението му отново създава нова нишка в съществуващия процес, която показва познатия прозорец за управление на файлове, вместо да стартира нов процес.

Това поведение позволява намален отпечатък на паметта, но също така може да внесе свой собствен обрат при отстраняване на проблеми. Критична грешка или необработено изключение в кода, който се изпълнява в процеса explorer.exe, включително сървърите в процеса, предоставени от DLL, ще доведе до срив на цялата работна среда.

В повечето случаи процесът на работния плот ще се рестартира автоматично. Ако не се рестартира, все пак трябва да можете да използвате Ctrl-Shift-Esc, за да изведете диспечера на задачите. Оттам отидете на Файл> Нова задача (Изпълнение ...)> Тип explorer.exe> ​​OK за да рестартирате процеса.

Това може да се избегне с проста промяна. Отворено Windows Explorer> Организиране> Опции за папка и търсене във Vista/7. За Windows 8 и по -нови версии отворете File Explorer> Изглед> Опции> Промяна на папката и опциите за търсене . Изберете Преглед на раздела и проверете Стартирайте прозорците на папки в отделен процес .

Контролерът на xbox one не се включва

Промяната на тази настройка изолира процеса на работния плот от всички други отворени прозорци на Windows Explorer. Ако някой от тези прозорци на Explorer се срине, работният плот ще остане невредим.

Microsoft Visual C ++ библиотека за изпълнение (CRT)

Библиотеката за изпълнение на Microsoft Visual C ++ предоставя процедури за програмиране на Windows, които автоматизират много задачи, като вход/изход, манипулиране на файлове, разпределение на паметта, системни повиквания и много други.

Всяка инсталация на Windows ще има поне две различни версии на CRT. Прясно изградена Vista SP2 през Windows 10 машина ще има както версии 8.0 и 9.0 (VC 2005 и VC 2008, съответно). Когато е инсталиран допълнителен софтуер, той може да включва и по -нови версии на времената на изпълнение, в зависимост от това коя версия на Visual C ++ е била използвана за създаване на програмата или някой от нейните компоненти.

Грешки по време на работа

Когато в кода се срещне грешка или изключение, в идеалния случай те ще бъдат обработени възможно най -скоро в изпълняващата се в момента процедура и или ще бъдат коригирани, или ще позволят изящна грешка. Ако грешката не се обработва локално, тя се предава до кода, който извиква изпълняващия се в момента код, и процесът продължава, докато не бъде обработено изключението. Ако завърши изпълнението си до върха на веригата и все още не се обработва, ще генерира грешка по време на работа, както се вижда по -горе.

Когато потребителят кликне върху бутона OK, процесът ще бъде прекратен. Ако програмата има определено поведение при отказ, като критични услуги, или състоянието на нейното изпълнение се наблюдава от друг процес, тя може да бъде автоматично възстановена. Това се случва в този случай. Екранът потъмнява, когато процесът explorer.exe е прекратен, след това работният плот се връща, когато процесът explorer.exe се рестартира.

Въпреки че съобщението за грешка по -горе ясно показва, че идва от процеса explorer.exe, няма вероятност да има проблем със самия explorer.exe. Много по-вероятно е виновникът да се крие другаде, като например разширение на трета страна, което се използва от Explorer.

Други съображения

С описанието на нашия читател на проблема по -горе, има няколко допълнителни елемента, които трябва да вземем предвид:

  • По време на катастрофата Explorer се опитваше, но не успя, да попълни изгледа на списък.
  • Невъзможността за достъп до дискове след повторно създаване на работния плот може да показва, че друг процес е заключил едно или повече от тези устройства, като по този начин предотвратява достъпа от новосъздадения процес explorer.exe.
  • Бягане sfc /scannow и получаването на чист здравен отчет, изпуска защитените ресурси на Windows в дъното на списъка за разглеждане. Други причини са много по -вероятни.

Поправките са налице

В този конкретен случай има три области, в които бих потърсил решение. Първият включва услугата Windows Search, вторият включва проучване на разширения на обвивката, а последният би бил самите VC ++ преразпределими.

Тъй като оригиналната снимка на екрана показва срива, който се случва, когато Explorer се опитва да попълни изгледа на списък, възможно е услугата Windows Search да блокира достъпа до необходимите ресурси. Виждал съм това да се случва, когато услугата се срине и няма правилните параметри за рестартиране.

Натиснете Win+R> Тип services.msc> OK за стартиране на конзолата за управление с модула за услуги. Превъртете надолу до Windows Search и щракнете двукратно върху записа, за да отворите диалоговия прозорец Properties. Уверете се, че настройките в раздела за възстановяване съвпадат с изображението по -долу.

Най -често срещаният проблем е настройката „Рестартиране на услугата след:“. Тази грешка често възниква, когато тази настройка не е нула.

Проблемни разширения на обвивката

Изтегли ShellExView на Nirsoft за вашата системна архитектура (x86 или x64), инсталирайте и стартирайте. Ще отнеме малко време, за да разгледате системата и да попълните таблицата с данни. Превъртете до колоната CLSID Modified Time и кликнете върху заглавката, за да сортирате това поле. Ако искате да изключите модулите, предоставени от Microsoft, можете да отидете на Опции> Скриване на всички разширения на Microsoft . За тези, които използват 64-битова версия на Windows, може да искате да покажете 32-битовите разширения в системата, като отидете на Опции> Показване на 32-битови разширения на обвивката .

Потърсете разширения, които са добавени непосредствено преди появата на симптомите. Изберете един или повече и натиснете F7 или отидете на Файл> Деактивиране на избрани елементи или щракнете върху червената LED икона в лентата с инструменти. В идеалния случай това трябва да се прави един по един.

Тествайте, за да видите дали симптомите продължават. Ако това стане, можете да активирате отново деактивираните (ите) разширения (и), като използвате F8 , Файл> Активиране на избрани елементи или зелената икона на LED лентата с инструменти. Оттук деактивирайте различно разширение и повторете процеса на тестване, докато намерите този, който причинява проблема.

Ремонт/Преинсталиране на VC ++ за разпространение

Използвам тази в краен случай, ако само една програма изхвърля грешки. Ако имате няколко програми, които имат проблеми с грешките по време на работа на VC ++, може да опитате първо това.

Когато разглеждам инсталираните програми в моята система ( Контролен панел> Програми и функции ), той показва всяка версия на пакетите за разпространение (и някои от техните актуализации), вариращи от версия 8 до версия 12 (VC ++ 2005 до VC ++ 2013). Инсталирах ги поради инструментите за програмиране на Microsoft, които използвам. Повечето потребители няма да имат всички тези.

Можете да намерите най -новите изтегляния за поддържани версии на Visual C ++ от Microsoft. За нашите цели тук трябва да се интересувате само от тези, които са означени като „преразпределяеми“ пакети. Връзките, които са класифицирани като сервизни пакети, са за инструментите за програмиране, а не само за времената на изпълнение. Ще ви трябват само тези, които в момента са изброени в инсталираните програми на вашата система. Инсталирането на други версии няма да помогне в този случай. Потребителите на 64-битови операционни системи може да се нуждаят както от x86, така и от x64 версиите на CRT.

Windows Update проверява дали на вашия компютър са инсталирани най -новите актуализации за тези пакети, но не проверява дали е правилно инсталиран и не е счупен. Инсталаторите могат да проверят дали всички файлове за изпълнение са правилни и всички записи в системния регистър са правилни.

След като изтеглите подходящите инсталатори, стартирайте ги в системата. Версиите от 2005 г. ще ви подканят да приемете лицензионно споразумение, преди да преинсталирате пакета. Всички останали имат графичен интерфейс, който ще ви попита дали искате да поправите или деинсталирате съществуващата инсталация. В повечето случаи ремонтната операция ще отстрани всички проблеми.

Ако искате да опитате най -екстремния метод, можете да деинсталирате средата на изпълнение, да рестартирате машината, след което да ги инсталирате отново. Не препоръчвам този метод с времето на изпълнение 2005 и 2008. Без тях Windows ще генерира много грешки и голяма функционалност няма да бъде там за вас, когато рестартирате.

Заключение

С малко наблюдение, докосване на опити и грешки и известно разбиране за това как грешките се генерират от времето на изпълнение на системата, софтуерните проблеми могат да бъдат намерени и разрешени, без да се прибягва до сложни инструменти и регистрационни файлове за отстраняване на грешки.

Срещали ли сте грешки по време на работа на вашата система? Какво беше необходимо за решаването им? Кажете ми в коментарите по -долу.

Дял Дял Туит електронна поща Ето защо ФБР е издало предупреждение за кошери Ransomware

ФБР издаде предупреждение за особено гаден вид рансъмуер. Ето защо трябва да сте особено предпазливи към рансъмуера на Hive.

Прочетете Напред
Свързани теми
  • Windows
  • Обяснена технология
  • Попитайте експертите
  • Windows Explorer
  • Windows
  • File Explorer
  • Windows Търсене
  • Отстраняване на неизправности
За автора Брус Епър(13 статии са публикувани)

Брус играе с електроника от 70 -те години, компютри от началото на 80 -те години и точно отговаря на въпроси относно технологиите, които не е използвал и не е виждал през цялото време. Той също се дразни, опитвайки се да свири на китара.

Още от Брус Епър

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате