Как исправить ошибки времени выполнения Windows Visual C ++

Как исправить ошибки времени выполнения Windows Visual C ++

Общие библиотеки в Windows делают программирование намного более эффективным для программиста, которому не нужно изобретать велосипед каждый раз, когда ему нужно выполнить общую задачу. Они также упрощают устранение дыр в безопасности в совместно используемом коде, когда они обнаруживаются, поскольку он требует исправления в меньшем количестве мест и не требует перекомпиляции каждого приложения.





Несмотря на эти положительные аспекты, они могут создавать свои собственные проблемы при попытке устранить основную причину сообщений об ошибках, которые они могут генерировать.





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

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





После нажатия кнопки ОК в диалоговом окне, показанном на скриншоте, экран затемнится и вернется к нормальной работе, но это не позволит мне получить доступ к дискам C, D и, иногда, E при попытке доступа к ним. с моего компьютера.

Бег sfc / scannow не находит ошибок. Я скачал обновления с веб-сайтов Dell и Microsoft, пытаясь решить эту проблему. Я также установил распространяемый пакет Microsoft Visual C ++ 2010 (x86). ПК полностью обновлен в соответствии с Центром обновления Windows.



Ответ Брюса:

Примечание: обсуждение проводника Windows в Windows 7 и более ранних версиях также относится к проводнику в Windows 8 и более поздних версиях. Если между ними есть заметная разница, это будет указано явно.

Оболочка Windows

проводник Виндоус является оболочку и запускается как процесс explorer.exe, как показано в диспетчере задач или в обозревателе процессов Sysinternals. Как и во многих других программах Windows, все функции, предоставляемые оболочкой, не включены в этот единственный исполняемый файл. Существуют десятки других файлов EXE и DLL, используемых для реализации листов свойств, обработчиков свойств, обработчиков предварительного просмотра, контекстных меню и многих других элементов, которые вы используете в проводнике Windows каждый день.





Расширяемая оболочка

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

Многие из этих расширений оболочки реализованы как внутрипроцессные серверы модели компонентных объектов (COM). Это означает, что когда процесс, в данном случае проводник Windows, использует расширение, он не будет отображаться в диспетчере задач или обозревателе процессов как отдельный запущенный процесс со своим собственным идентификатором процесса (PID). Вместо этого он выполняется внутри вызывающего процесса explorer.exe.





Одноэкземплярный процесс по умолчанию

Проводник Windows может работать как два отдельных процесса, но в конфигурации по умолчанию он будет запускать только один экземпляр. Когда он впервые запускается как часть процесса запуска, он создает среду рабочего стола Windows. Его повторное выполнение создает новый поток в существующем процессе, который отображает знакомое окно управления файлами вместо запуска нового процесса.

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

В большинстве случаев процесс рабочего стола будет перезапущен автоматически. Если он не перезапускается, вы все равно сможете использовать Ctrl-Shift-Esc для вызова диспетчера задач. Оттуда перейдите к Файл> Новая задача (Выполнить…)> тип explorer.exe> ​​ОК чтобы перезапустить процесс.

Этого можно избежать простым изменением. Открытым Проводник Windows> Упорядочить> Папка и параметры поиска в Vista / 7. Для Windows 8 и новее откройте Проводник> Просмотр> Параметры> Изменить папку и параметры поиска . Выберите Вкладка просмотра и проверьте Запускать окна папок в отдельном процессе .

лучшее место для покупки бывших в употреблении Mac

Изменение этого параметра изолирует ваш рабочий стол от всех других открытых вами окон Windows 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 ++ использовалась для создания программы или любого из ее компонентов.

Ошибки во время выполнения

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

Когда пользователь нажимает кнопку ОК, процесс завершается. Если программа имеет определенное поведение отказа, такое как критические службы, или ее состояние выполнения отслеживается другим процессом, она может быть автоматически возрождена. Вот что происходит в данном случае. Экран гаснет, когда процесс explorer.exe завершается, затем рабочий стол возвращается при перезапуске процесса explorer.exe.

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

Прочие соображения

При описании проблемы нашим читателем, мы должны принять во внимание несколько дополнительных моментов:

  • Во время сбоя Explorer пытался, но не смог, заполнить список.
  • Невозможность доступа к дискам после возрождения рабочего стола может указывать на то, что другой процесс заблокировал одно или несколько из этих устройств, тем самым предотвращая доступ из вновь созданного процесса explorer.exe.
  • Бег sfc / scannow и, получив чистую справку о работоспособности, помещает ресурсы, защищенные Windows, в конец списка для рассмотрения. Другие причины гораздо более вероятны.

Исправления уже в

В этом конкретном случае есть три области, в которых я хотел бы найти решение. Первый включает службу поиска Windows, второй - исследование расширений оболочки, а последним будут сами распространяемые файлы VC ++.

Поскольку исходный снимок экрана показывает сбой, происходящий, когда проводник пытается заполнить представление списка, возможно, что служба поиска Windows блокирует доступ к необходимым ресурсам. Я видел, как это происходит, когда служба дает сбой и не имеет правильных параметров перезапуска.

Нажмите Win + R> тип services.msc> ОК для запуска консоли управления с модулем служб. Прокрутите вниз до Windows Search и дважды щелкните запись, чтобы открыть диалоговое окно «Свойства». Убедитесь, что настройки на вкладке «Восстановление» соответствуют изображению ниже.

Наиболее частая проблема - это параметр «Перезапустить службу через:». Эта ошибка часто возникает, если этот параметр не равен нулю.

Проблемные расширения оболочки

Скачать ShellExView от Нирсофт для архитектуры вашей системы (x86 или x64) установите и запустите. Понадобится немного времени, чтобы изучить систему и заполнить таблицу данными. Прокрутите до столбца CLSID Modified Time и щелкните заголовок, чтобы выполнить сортировку по этому полю. Если вы хотите исключить модули, предоставленные Microsoft, вы можете перейти на Параметры> Скрыть все расширения Microsoft . Для тех, кто использует 64-битную версию Windows, вы также можете показать 32-битные расширения в системе, перейдя в Параметры> Показать 32-разрядные расширения оболочки .

Ищите расширения, которые были добавлены незадолго до появления симптомов. Выберите один или несколько и нажмите F7 или перейти к Файл> Отключить выбранные элементы или щелкните значок красного светодиода на панели инструментов. В идеале это следует делать по одному.

Проверьте, сохраняются ли симптомы. Если они это сделают, вы можете повторно включить ранее отключенные расширения, используя F8 , Файл> Включить выбранные элементы , или зеленый светодиодный значок на панели инструментов. Отсюда отключите другое расширение и повторяйте процесс тестирования, пока не найдете то, которое вызывает проблему.

Восстановить / переустановить распространяемые компоненты VC ++

Я использую это как последнее средство, если только одна программа выдает ошибки. Если у вас есть несколько программ, у которых возникают проблемы с ошибками времени выполнения VC ++, вы можете сначала попробовать это.

При просмотре установленных программ в моей системе ( Панель управления> Программы и компоненты ), в нем показаны все версии распространяемых пакетов (и некоторые из их обновлений) от версии 8 до версии 12 (от VC ++ 2005 до VC ++ 2013). Я установил их из-за инструментов программирования Microsoft, которые я использую. У большинства пользователей всего этого не будет.

Вы можете найти последние загрузки для поддерживаемых версий Visual C ++ от Microsoft. Для наших целей здесь вам нужно беспокоиться только о тех, которые помечены как «распространяемые» пакеты. Ссылки, которые классифицируются как пакеты обновления, предназначены для инструментов программирования, а не только для среды выполнения. Вам понадобятся только те, которые в настоящее время перечислены в установленных программах в вашей системе. Установка других версий в этом случае не поможет. Пользователям 64-битных операционных систем могут потребоваться как x86, так и x64 версии CRT.

Центр обновления Windows проверяет, установлены ли на вашем компьютере последние обновления для этих пакетов, но не проверяет, правильно ли они установлены и не повреждены ли они. Установщики могут проверить правильность всех файлов среды выполнения и правильности всех записей в реестре.

После того, как вы скачали соответствующие установщики, запустите их в системе. В версиях 2005 перед повторной установкой пакета вам будет предложено принять лицензионное соглашение. У всех остальных есть графический интерфейс, который спросит вас, хотите ли вы восстановить или удалить существующую установку. В большинстве случаев ремонт устранит любые проблемы.

Если вы хотите попробовать самый экстремальный метод, вы можете удалить среды выполнения, перезагрузить компьютер, а затем переустановить их. Я не рекомендую этот метод для сред выполнения 2005 и 2008 годов. Без них Windows будет генерировать множество ошибок, и при перезагрузке у вас не будет большой функциональности.

Заключение

С небольшим наблюдением, методом проб и ошибок и некоторым пониманием того, как ошибки генерируются во время выполнения в системе, можно найти и решить проблемы с программным обеспечением, не прибегая к сложным инструментам отладки и журналам.

Вы сталкивались с ошибками во время выполнения в вашей системе? Что требовалось для их решения? Позвольте мне знать в комментариях ниже.

Делиться Делиться Твитнуть Эл. адрес Вот почему ФБР выпустило предупреждение о вирусах-вымогателях Hive

ФБР вынесло предупреждение об особо опасном штамме программ-вымогателей. Вот почему вам нужно особенно опасаться программ-вымогателей Hive.

Читать далее
Похожие темы
  • Окна
  • Объяснение технологии
  • Спросите у экспертов
  • проводник Виндоус
  • Окна
  • Проводник
  • Поиск Windows
  • Исправление проблем
Об авторе Брюс Эппер(Опубликовано 13 статей)

Брюс играет с электроникой с 70-х, компьютерами с начала 80-х и точно отвечает на вопросы о технологиях, которые он не использовал и не видел все время. Он также раздражает себя, пытаясь играть на гитаре.

Ещё от Bruce Epper

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться