Рекламное объявление
Совместно используемые библиотеки в Windows делают программирование намного более эффективным для программиста, которому не нужно изобретать велосипед каждый раз, когда ему нужно выполнить обычную задачу. Они также облегчают включение дыр в безопасности в общем коде, когда они обнаруживаются, поскольку его нужно исправлять в меньшем количестве мест и не требуется перекомпиляция каждого приложения.
Несмотря на эти положительные аспекты, они могут создавать свои собственные проблемы, пытаясь устранить причину возникновения сообщений об ошибках, которые они могут генерировать.
Вопрос нашего читателя:
Как исправить проблему 32-битной C: \ Windows \ explorer.exe в Windows Vista на Dell Inspiron 530?
После нажатия кнопки ОК в диалоговом окне, показанном на скриншоте, экран станет черным и вернется в нормальное состояние. работает, но это не позволит мне получить доступ к C, D и, иногда, к диску E при попытке доступа к ним из My Компьютер.
Бег SFC / SCANNOW не находит ошибок. Я загружал обновления с веб-сайтов Dell и Microsoft, пытаясь решить эту проблему. Я также установил распространяемый пакет Microsoft Visual C ++ 2010 (x86). ПК полностью обновлен в соответствии с Windows Update.
Брюс ответ:
Примечание. Дискуссии о проводнике Windows в Windows 7 и более ранних версиях также применимы к проводнику Windows 8 и более поздних версий. Если между ними есть заметная разница, это будет явно указано.
Оболочка Windows
проводник Виндоус является оболочка и работает как процесс explorer.exe, как показано в диспетчере задач или Sysinternals 'Process Explorer Process Explorer - самая мощная замена диспетчера задач [Windows]Давайте будем честными, диспетчер задач Windows не так хорош для понимания и управления процессами, запущенными на вашем компьютере. Даже в Windows 8, где он значительно улучшился, диспетчер задач не может приблизиться к ... Подробнее . Как и многие другие программы Windows, все функции, предоставляемые оболочкой, не включены в этот единственный исполняемый файл. Есть десятки других EXE и DLL файлы Как исправить ошибки в отсутствующих DLL-файлах Подробнее используется для реализации таблиц свойств, обработчиков свойств, обработчиков предварительного просмотра, контекстных меню и многих других элементов, которые вы используете в проводнике Windows каждый день.
Расширяемая оболочка
Расширения оболочки позволяют программистам легко добавлять функциональность в Проводник Windows, написав DLL для выполнения задача и регистрация DLL в операционной системе, так что Explorer знает, где найти код для выполнения задача. Например, 7-Zip Как извлечь файлы из ZIP, RAR, 7z и других общих архивовВы когда-нибудь сталкивались с файлом .rar и задавались вопросом, как его открыть? К счастью, управлять файлами ZIP и другими сжатыми архивами просто с помощью правильных инструментов. Это то что тебе нужно знать. Подробнее добавляет подменю в стандартное контекстное меню, предоставляя быстрый доступ к задачам обработки архива, Страж жесткого диска Следите за своим здоровьем с помощью жесткого диска SentinelУ вас когда-нибудь был сбой диска? К сожалению, нет панацеи для предотвращения повреждения оборудования. Но мониторинг вашего жесткого диска или SSD, чтобы действовать, когда их смерть становится вероятной, является первым шагом. Подробнее добавляет на стандартные значки дисков накладки на значки, чтобы вы могли сразу увидеть их состояние и HashTab добавляет новый лист свойств для вычисления и отображения хэшей выбранного файла.
Многие из этих расширений оболочки реализованы как серверы внутрипроцессной объектной модели (COM). Это означает, что когда процесс, в данном случае Windows Explorer, использует расширение, он не будет отображаться в диспетчере задач или в проводнике процессов как отдельный запущенный процесс с собственным идентификатором процесса (ПИД). Вместо этого он выполняется внутри вызывающего процесса explorer.exe.
Процесс единственного экземпляра по умолчанию
Проводник Windows написан так, что может работать как два отдельных процесса, но - в конфигурации по умолчанию - он будет запускать только один экземпляр. Когда он впервые выполняется как часть процесса запуска, он создает среду рабочего стола Windows. Повторное его выполнение создает новый поток в существующем процессе, который отображает знакомое окно управления файлами вместо запуска нового процесса.
Такое поведение позволяет уменьшить объем используемой памяти, но также может внести свой собственный небольшой поворот при устранении неполадок. Критическая ошибка или необработанное исключение в коде, выполняемом в процессе explorer.exe, включая внутрипроцессные серверы, предоставляемые библиотеками DLL, приведут к падению всей среды рабочего стола.
В большинстве случаев процесс рабочего стола будет автоматически перезапущен. Если он не перезапускается, вы все равно сможете использовать Ctrl-Shift-Esc для вызова диспетчера задач. Оттуда, перейдите к Файл> Новая задача (Выполнить…)> тип explorer.exe> ОК перезапустить процесс.
Этого можно избежать с помощью простого изменения. открыто Проводник Windows> Упорядочить> Папка и параметры поиска в Vista / 7. Для Windows 8 и новее откройте Проводник> Вид> Параметры> Изменить папку и параметры поиска. Выберите Посмотреть вкладку и проверить Запустите папку Windows в отдельном процессе.
Изменение этого параметра изолирует процесс рабочего стола от всех других окон 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 ++ использовалась для создания программы или каких-либо ее компонентов.
Ошибки во время выполнения
Когда в куске кода встречается ошибка или исключение, в идеале это будет обработано, как только возможно в текущей выполняемой процедуре, и либо будет исправлено, либо позволит изящно отказ. Если ошибка не обрабатывается локально, она передается в код, который вызвал исполняемый в данный момент код, и процесс продолжается до тех пор, пока не будет обработано исключение. Если он завершает свой запуск до вершины цепочки и все еще не обработан, он выдаст ошибку времени выполнения, как показано выше.
Когда пользователь нажимает кнопку ОК, процесс будет прекращен. Если в программе определено поведение при сбое, например, в критических службах, или если состояние ее выполнения отслеживается другим процессом, она может автоматически вызываться. Это то, что происходит в этом случае. Экран отключается при завершении процесса explorer.exe, затем рабочий стол возвращается после перезапуска процесса explorer.exe.
Хотя вышеприведенное сообщение об ошибке четко указывает на то, что оно было получено в процессе explorer.exe, оно вряд ли является проблемой для самого explorer.exe. Скорее всего, виновник лежит в другом месте, например, стороннем расширении, используемом Explorer.
Другие соображения
С описанием вышеизложенного нашего читателя, есть несколько дополнительных пунктов, которые мы должны принять во внимание:
- Во время аварии Explorer пытался, но не смог, заполнить список.
- Невозможность доступа к дискам после появления рабочего стола может указывать на то, что другой процесс имеет или более из этих устройств заблокированы, тем самым предотвращая доступ из недавно созданного explorer.exe процесс.
- Бег SFC / SCANNOW и, получив чистый счет за здоровье, отбрасывает защищенные ресурсы Windows в конец списка для рассмотрения. Другие причины гораздо более вероятны.
Исправления в
В данном конкретном случае есть три области, в которых я бы искал решение. Первый включает службу поиска Windows, второй - исследование расширений оболочки, а последним будут сами распространяемые файлы VC ++.
Windows Search
Поскольку на оригинальном снимке экрана показано, что происходит сбой, когда проводник пытается заполнить listview, возможно, что служба поиска Windows блокирует доступ к необходимым ресурсам. Я видел, как это происходит, когда служба аварийно завершает работу и не имеет правильных параметров перезапуска.
Нажмите Win + R> тип services.msc> ОК запустить консоль управления с сервисным модулем. Прокрутите вниз до поиска Windows и дважды щелкните запись, чтобы открыть диалоговое окно «Свойства». Убедитесь, что настройки на вкладке Восстановление соответствуют изображению ниже.
Наиболее распространенной проблемой является настройка «Перезапустить службу после:». Эта ошибка часто возникает, когда этот параметр не равен нулю.
Проблемные расширения оболочки
Скачать ShellExView от Nirsoft для вашей системной архитектуры (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 будет генерировать много ошибок, и при перезагрузке вам не хватит функциональности.
Вывод
С небольшим наблюдением, пробой и ошибкой и некоторым пониманием того, как ошибки генерируются из время выполнения в системе, проблемы с программным обеспечением могут быть найдены и решены без обращения к сложным средствам отладки и журналы.
Вы столкнулись с ошибками во время выполнения в вашей системе? Что требовалось для их решения? Позвольте мне знать в комментариях ниже.
Брюс играет с электроникой с 70-х годов, с компьютерами с начала 80-х и точно отвечает на вопросы о технологиях, которые он не использовал и не видел все время. Он также раздражает себя, пытаясь играть на гитаре.