Как устранить ошибки приложения net framework

После установки программы ее запуск может прерваться ошибкой «Необрабатываемое исключение в приложении», которая указывает на неполадки платформы Microsoft .NET Framework. Если и удастся ее запустить, нажатием на кнопку «Продолжить», то, скорее всего, будет работать некорректно. Сбой также может возникнуть при запуске игры, загруженной из Магазина Майкрософт, или после входа в Windows. В некоторых случаях в сообщении указывается конкретная причина ее возникновения.

Чем вызвана ошибка?

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

  1. В ходе установки некоторые компоненты ПО были перемещены антивирусом на карантин. Поэтому требуется временное отключение защиты в реальном времени или его замена другим антивирусным пакетом.
  2. Повреждены компоненты платформы .NET Framework.
  3. В системе присутствуют вредоносное ПО. Требуется полная проверка системы на вирусы.
  4. Запуску приложения препятствует фоновый процесс. Исключить его причастность можно в режиме чистой загрузки.

Замена антивирусной программы

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

Откройте Панель управления с помощью системного поиска или командой control, запущенной из окна «Выполнить» (Win + R).

Переключите просмотр на категории в правом верхнем углу и кликните на вкладку «Удалить программы».

Найдите в списке антивирус, щелкните по нему правой кнопкой мыши и выберите «Удалить». Следуйте инструкциям на экране до завершения удаления.

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

Запуск в режиме чистой загрузки

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

Перейдите в конфигурацию системы командой msconfig, запущенной из окна командного интерпретатора (Win + R).

В меню Службы отметьте флажком опцию «Не отображать службы Майкрософт» и кликните на кнопку «Отключить все».

В меню Автозагрузка нажмите на «Открыть диспетчер задач». Отключите все программы, которые присутствуют в списке, и перезагрузите компьютер.

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

Ошибку необрабатываемого исключения можно решить путем установки последней версии платформы. Для этого с сайта Microsoft, на который можно перейти по запросу «download net framework», загрузите последнюю версию пакета.

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

Откройте раздел Компоненты и программы командой appwiz.cpl из окна «Выполнить».

В левой панели щелкните на «Включение или отключение компонентов Windows».

Найдите версии.NET Framework и проверьте, отмечены ли они флажком. Если нет, после установки флажков сохраните изменения на «ОК», и перезагрузите компьютер.

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

Также исправить повреждения установленных пакетов можно с помощью инструмента восстановления. Загрузите его из сайта, который доступен по запросу «средство восстановления .NET Framework».

После загрузки запустите диагностику и следуйте инструкциям до ее завершения.

Восстановление системных файлов

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

Откройте командную строку с правами администратора с помощью поиска Windows или из меню Win + X.

Проверьте систему командой sfc /scannow.

После ее завершения перезагрузите компьютер и выполните следующую:

DISM /Online /Cleanup-Image /RestoreHealth

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

Содержание:

  1. Нажатие кнопки «Продолжить» в уведомлении
  2. Переустановка .NET Framework
  3. Проверка пути на предмет кириллицы
  4. Переустановка программы, которая вызывает системный конфликт
  5. Переустановка и обновление драйверов

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

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

В этой статье будут описаны несколько способов решения конфликта на операционных системах Windows 7, 8 и 10.

1. Нажатие кнопки «Продолжить» в уведомлении

Уведомление об ошибкеРис.1 Уведомление об ошибке

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

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

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

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

Сперва удалим старую версию NET.Framework, которая существенно усложняет жизнь другим приложениям. Чтобы сделать это заходим в «Панель управления» и выбираем там пункт «Программы и компоненты». Для пользователей Windows 10 есть поиск, с помощью которого вам просто нужно нажать «Пуск» и ввести «Программы и компоненты». Открывается окно, в котором нам нужно найти «Включение или отключение компонентов Windows». Находим в открывшемся окне NET Framework и отключаем её.

Отключение .NET FrameworkРис. 2 Отключение .NET Framework

Теперь нам нужно скачать новую и исправную версию с сайта Microsoft. Приложение полностью бесплатное, так что не возникнет никаких сложностей со скачиванием. Для этого в браузере вводим запрос «net framework скачать». Первая ссылка, ведущая на сайт компании Microsoft нужна нам. Пролистываем чуть ниже и нажимаем на кнопку «Скачать».

Официальный сайт Microsoft, скачивание .NET FrameworkРис. 3 Официальный сайт Microsoft, скачивание .NET Framework

Запускаем только что скачанный файл и ждём завершения установки, после которой системе нужно будет обновиться. Для этого перезапускаем компьютер и проверяем, была ли ошибка исправлена в новой версии. Если вы вновь видите «Необрабатываемое исключение в приложении», тогда приступаем ко второму этапу.

3. Проверка пути на предмет кириллицы

Если имя вашего профиля в Windows содержит русские символы, вполне вероятно, что система будет давать сбой, особенно при запуске некоторых игр, которые ссылаются на папку «Мои Документы», которая находится как раз в личной папке пользователя.

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

4. Переустановка программы, которая вызывает системный конфликт

Попробуйте переустановить игры или приложение, при запуске которого и вызывается уведомление об ошибке. Если это игра, установите весь дополнительный софт, который рекомендуется при запуске. Возможно, вам придется поискать информацию об этом в других источниках, но большинство игр требуют для запуска последнюю версию .NET Framework, DirectX, XNA Framework и Visual Studio 2010, 2012 или 2015 года. Крайне часто именно несоблюдение этого правила приводит к тому, что приложение даже не запускается.

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

5. Переустановка и обновление драйверов

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

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

Чтобы проверить эту гипотезу, заходим в «Диспетчер устройств». Путь к нему таков: «Пуск» — «Панель управления» — «Диспетчер устройств».

Неизвестное устройство, для которого система не нашла драйвераРис. 4 Неизвестное устройство, для которого система не нашла драйвера

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

Если драйвера не были найдены, придется вручную скачивать их из Интернета, а для этого нужно будет проделать несколько сложных действий. Вновь кликаем правой кнопкой мыши, но теперь выбираем пункт «Свойства», выделенный жирным шрифтом. Заходим во вкладку «Сведения» и там выбираем пункт «ИД Оборудования». Копируем первое значение (правой кнопкой мыши – «копировать) и вставляем в поисковую систему.

ID оборудованияРис. 5 ID оборудования

Буквально по первым ссылкам можно будет понять, какое именно оборудование не может обновить для себя драйвера.

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

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

Отзывы

Как исправить ошибку инициализации .NET Framework 4Одна из возможных ошибок при запуске программ или при входе в Windows 10, 8 или Windows 7 — сообщение «Ошибка инициализации платформы .NET Framework. Для запуска этого приложения сначала необходимо установить одну из следующих версий .NET Framework: 4» (версия обычно указывается более точно, но это не играет роли). Причиной тому может быть как неустановленная платформа .NET Framework нужной версии, так и проблемы с установленными на компьютере компонентами.

В этой инструкции — возможные способы исправить ошибки инициализации .NET Framework 4 в последних версиях Windows и исправить запуск программ.

Примечание: далее в инструкции для установки предлагается .NET Framework 4.7, как последняя на текущий момент времени. Вне зависимости от того какую из «4-х» версий требуется установить в сообщении об ошибке, последняя должна подойти, как включающая все необходимые компоненты.

Первый вариант, который следует попробовать, если на настоящий момент он еще не был опробован — удалить имеющиеся компоненты .NET Framework 4 и установить их заново.

Если у вас Windows 10, порядок действий будет таким

  1. Зайдите в Панель управления (в поле «Просмотр» установите «Значки») — Программы и компоненты — нажмите слева «Включение и отключение компонентов Windows». Включение и отключение компонентов Windows
  2. Снимите отметку с .NET Framework 4.7 (или 4.6 в более ранних версиях Windows 10). Включить .NET Framework 4 в Windows
  3. Нажмите «Ок».

После удаления, перезагрузите компьютер, снова зайдите в раздел «Включение и отключение компонентов Windows», включите .NET Framework 4.7 или 4.6, подтвердите установку и опять же, перезагрузите систему.

Если у вас Windows 7 или 8:

  1. Зайдите в панель управления — программы и компоненты и удалите там .NET Framework 4 (4.5, 4.6, 4.7, в зависимости от того, какая версия установлена).
  2. Перезагрузите компьютер.
  3. Скачайте с официального сайта Майкрософт .NET Framework 4.7 и установите на компьютер. Адрес страницы для загрузки — https://www.microsoft.com/ru-ru/download/details.aspx?id=55167

После установки и перезагрузки компьютера, проверьте, была ли устранена проблема и появляется ли ошибка инициализации платформы .NET Framework 4 снова.

Использование официальных утилит исправления ошибок .NET Framework

Ошибка инициализации NET Framework 4

У Майкрософт имеется несколько собственных утилит для исправления ошибок .NET Framework:

  • .NET Framework Repair Tool
  • .NET Framework Setup Verification Tool
  • .NET Framework Cleanup Tool

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

  1. Скачайте утилиту со страницы https://www.microsoft.com/en-us/download/details.aspx?id=30135
  2. Откройте загруженный файл NetFxRepairTool
  3. Примите лицензию, нажмите кнопку «Next» и дождитесь, когда будут проверены установленные компоненты .NET Framework.
  4. Будет отображен список возможных проблем с .NET Framework разных версий, а по нажатию на Next будет запущено автоматическое исправление, если оно возможно. Утилита .NET Framework Repair Tool

По завершении работы утилиты рекомендую перезагрузить компьютер и проверить, была ли исправлена проблема.

Утилита .NET Framework Setup Verification Tool позволяет проверить правильность установки компонентов .NET Framework выбранной версии в Windows 10, 8 и Windows 7.

После запуска утилиты выберите версию .NET Framework, которую требуется проверить и нажмите кнопку «Verify Now». По завершении проверки, текст в поле «Current Status» будет обновлен, а сообщение «Product verification succeeded» означает, что с компонентами все в порядке (в случае, если не все в порядке, вы можете просмотреть файлы журналов (View log), чтобы узнать, какие именно ошибки были найдены.

Утилита .NET Framework Setup Verification Tool

Скачать утилиту .NET Framework Setup Verification Tool можно с официальной страницы https://blogs.msdn.microsoft.com/astebner/2008/10/13/net-framework-setup-verification-tool-users-guide/ (загрузки смотрите в разделе «Download location»).

Еще одна программа — .NET Framework Cleanup Tool, доступная для загрузки на https://blogs.msdn.microsoft.com/astebner/2008/08/28/net-framework-cleanup-tool-users-guide/ (раздел «Download location»), позволяет полностью удалить выбранные версии .NET Framework с компьютера с тем, чтобы затем выполнить установку заново.

Утилита .NET Framework Cleanup Tool

Следует учитывать, что утилита не удаляет компоненты, которые являются составной частью Windows. Например, удалить .NET Framework 4.7 в Windows 10 Creators Update с ее помощью не получится, зато с большой вероятностью проблемы инициализации .NET Framework получится исправить в Windows 7 путем удаления версий .NET Framework 4.x в Cleanup Tool и последующей установки версии 4.7 с официального сайта.

Дополнительная информация

В некоторых случаях исправить ошибку может помочь простая переустановка программы, ее вызывающей. Либо, в случаях, если ошибка появляется при входе в Windows (т.е. при запуске какой-то программы в автозагрузке), может иметь смысл убрать эту программу из автозагрузки, если она не является необходимой (см. Автозагрузка программ в Windows 10).

После установки программы ее запуск может прерваться ошибкой «Необрабатываемое исключение в приложении», которая указывает на неполадки платформы Microsoft .NET Framework. Если и удастся ее запустить, нажатием на кнопку «Продолжить», то, скорее всего, будет работать некорректно. Сбой также может возникнуть при запуске игры, загруженной из Магазина Майкрософт, или после входа в Windows. В некоторых случаях в сообщении указывается конкретная причина ее возникновения.

Содержание

  • 1 Чем вызвана ошибка?
  • 2 Замена антивирусной программы
  • 3 Запуск в режиме чистой загрузки
  • 4 Установка последней версии .NET Framework
  • 5 Восстановление системных файлов

Чем вызвана ошибка?

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

  1. В ходе установки некоторые компоненты ПО были перемещены антивирусом на карантин. Поэтому требуется временное отключение защиты в реальном времени или его замена другим антивирусным пакетом.
  2. Повреждены компоненты платформы .NET Framework.
  3. В системе присутствуют вредоносное ПО. Требуется полная проверка системы на вирусы.
  4. Запуску приложения препятствует фоновый процесс. Исключить его причастность можно в режиме чистой загрузки.

Замена антивирусной программы

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

Откройте Панель управления с помощью системного поиска или командой control, запущенной из окна «Выполнить» (Win + R).

Переключите просмотр на категории в правом верхнем углу и кликните на вкладку «Удалить программы».

Найдите в списке антивирус, щелкните по нему правой кнопкой мыши и выберите «Удалить». Следуйте инструкциям на экране до завершения удаления.

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

Запуск в режиме чистой загрузки

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

Перейдите в конфигурацию системы командой msconfig, запущенной из окна командного интерпретатора (Win + R).

В меню Службы отметьте флажком опцию «Не отображать службы Майкрософт» и кликните на кнопку «Отключить все».

В меню Автозагрузка нажмите на «Открыть диспетчер задач». Отключите все программы, которые присутствуют в списке, и перезагрузите компьютер.

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

Ошибку необрабатываемого исключения можно решить путем установки последней версии платформы. Для этого с сайта Microsoft, на который можно перейти по запросу «download net framework», загрузите последнюю версию пакета.

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

Откройте раздел Компоненты и программы командой appwiz.cpl из окна «Выполнить».

В левой панели щелкните на «Включение или отключение компонентов Windows».

Найдите версии.NET Framework и проверьте, отмечены ли они флажком. Если нет, после установки флажков сохраните изменения на «ОК», и перезагрузите компьютер.

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

Также исправить повреждения установленных пакетов можно с помощью инструмента восстановления. Загрузите его из сайта, который доступен по запросу «средство восстановления .NET Framework».

После загрузки запустите диагностику и следуйте инструкциям до ее завершения.

Восстановление системных файлов

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

Откройте командную строку с правами администратора с помощью поиска Windows или из меню Win + X.

Проверьте систему командой sfc /scannow.

После ее завершения перезагрузите компьютер и выполните следующую:

DISM /Online /Cleanup-Image /RestoreHealth

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

29.07.2017

Просмотров: 39875

Во время запуска какой-то программы или на старте Windows 7 и выше, пользователь может столкнуться с ошибкой инициализации платформы .NET Framework 4. Возникает она по причине некорректной установки данного компонента или во время несовместимости с самой операционной системой. Поэтому, чтобы её решить, стоит рассмотреть несколько способов.

Читайте также: Как исправить ошибку установки NET Framework 4.0 «Failed to install .Net Framework 4.0 with Error Code HRESULT: 0xc8000222»?

Способы решения проблемы с инициализацией NET Framework

При запуске приложения на ПК с операционной системой Windows 7 и выше, может появиться сообщение о том, что «Для этого приложения сначала нужно установить одну из следующих версий NET Framework…». При этом версия фреймворка всегда указывается.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

Чтобы решить эту проблему самостоятельно, стоит ознакомиться со следующими рекомендациями.

Способ 1. Переустановка .NET Framework

  • Переходим в Панель управления и выбираем «Программы и компоненты».

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

  • Откроется небольшое окно. В меню слева выбираем «Включение и отключение компонентов Windows». Находим в списке и отключаем фреймворки.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

  • После возвращаемся к списку программ и находим там .NET Framework. Также удаляем их. Удаляем все, какие есть на ПК.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

  • После удаления всех установленных компонентов, стоит перезагрузить систему.

Теперь, когда система очищена от всех фреймворков, переходим на официальный сайт Майкрософт и жмем Скачать .NET Framework той версии, которая указана в ошибке. Загрузив нужный компонент, выполняем его установку и вновь перезагружаем ПК.

Способ 2. Использование официальных утилит для решения проблем с .NET Framework

Для исправления неполадок в работе фреймворков компания Майкрософт выпустила несколько утилит. Рассмотрим принцип их работы на практике.

Первая утилита – Microsoft .NET Framework Repair Tool. Она ищет и исправляет неполадки, которые связаны с фреймворками.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

Чтобы её применить, стоит загрузить файл, запустить его на своем ПК и принять условия лицензионного соглашения.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

После программа будет сканировать систему и предложит варианты решения проблемы. Жмём «Далее» и исправляем ошибку.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

Вторая программа для решения ошибки с инициализацией файлов – это .NET Framework Setup Verification Tool. Она проверяет, корректно ли установлены фреймворки. При этом её использование максимально простое. Нужно скачать и запустить программу, указать версию фреймворков, которые нужно проверить и дождаться завершения результатов проверки.

Как исправить ошибку, связанную с инициализацией .NET Framework 4?

В поле «Статус» будут помещены результаты проверки.

Третья утилита для исправления ошибок с .NET Framework – это .NET Framework Cleanup Tool. Она пригодиться в том случае, если вам не удалось переустановить фреймворки вручную. Утилита позволяет удалить, заново загрузить и корректно установить недостающие компоненты.

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

Доброго времени суток, друзья. Наверняка, почти каждый владелец компьютера с установленной операционной системой Windows, активно использующий свой ПК или ноутбук в работе, учёбе, играх и развлечениях, хоть раз да сталкивался с ошибками, возникающими при запуске или при работе различных программ и игр. Иногда ошибки могут выскакивать уже на этапе загрузки операционной системы, такие ошибки при включении компьютера свидетельствуют о некорректной работе, как минимум, одной из программ, находящихся в автозагрузке Windows.
Вариантов возможных ошибок, конечно, существует огромное множество, собственно, как и способов их устранения, но в данном цикле статей мы хотели бы уделить особое внимание ошибкам, вызванным нестабильной работой различных компонентов системы Windows, а именно: .NET FrameworkMicrosoft Visual C++ (или, сокращённо, MSVC) и DirectX.

Эти три набора исполняемых библиотек используются во всех современных операционных системах Windows: будь то уже доживающая свой век, лишённая поддержки Microsoft, Windows XP; не получившая широкого распространения и признанная разработчиком неудачной, Windows Vista; имеющая самую высокую популярность на сегодняшний день Windows 7; или последние версии продуктов от Мелкомягких (как многие зовут Microsoft в рунете), отражающие тенденции развития современной IT-индустрии, Windows 8/8.1 и Windows 10.

Давайте рассмотрим поближе каждый из этих пакетов, но не с точки зрения программистов и разработчиков ПО, а с позиции простых пользователей. Темой данной статьи будет .NET Framework

Содержание статьи:

Фраза «Программная платформа» в заголовке этой части статьи уже частично даёт нам ответ на вопрос «Что такое .NET Framework?»:

.NET Framework — это среда исполнения программных компонентов, определяющая базовые правила выполнения программы в операционной системе

Как же диагностировать проблемы в работе этого компонента системы и определить, что эта программная платформа выполняет свои обязанности некорректно?

Ошибки .NET Framework при запуске программ и игр

Ошибки среды .NET зачастую бывают легко диагностируемыми. Способствуют этому предупреждения системы, выдаваемые в случае сбоя в работе платформы .NET Framework. Ниже приведены две типовые ситуации.

Вот пример ошибки, оповещающий о необходимости установки .NET Framework 4 для запуска пользовательской программы

Ошибка .Net Framework 4

А это другой вариант ошибки, свидетельствующий о нехватке .NET Framework 3.5

Ошибка .NET Framework 3.5

Как видите, в подобных ситуациях особых проблем в определении виновника неработоспособности программы возникнуть не должно. Хотя, конечно, так выходит не всегда.

Узнать, какие версии .NET Framework установлены на компьютере

Начиная разговор о версиях данного ПО, следует обозначить один важный момент:

Каждая последующая версия платформы .NET Framework не включает в себя библиотеки предыдущих выпусков

Данное правило справедливо для крупных релизов. Об исключениях поговорим ниже, в разделе Какие версии .NET Framework устанавливать.

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

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

Для простоты восприятия выделим два основных способа определения версий установленного пакета .NET Framework:

  • первый — при помощи специальной утилиты с графическим интерфейсом;
  • второй — по записям в системном реестре Windows.

Определение установленных версий .NET Framework с помощью утилиты

Бельгийская компания ASoft, занимающаяся разработкой ПО, думает не только о себе. Фирма поделилась с общественностью своей наработкой: утилитой с названием ASoft .NET Version Detector, целью которой является вывод информации об установленных в системе версиях пакета .NET Framework и, при необходимости, установка недостающих версий.

Последнюю актуальную версию утилиты всегда можно скачать на официальном сайте разработчика, на данный момент это версия 16 R2, архив которой и предлагаем вам скачать из прикреплённого файла: ASoft .NET Version Detector. Проверить наличие новой версии программы можно из её же меню, нажав в верхней панели меню пункт HelpNew version?

Программа портативная (portable), работает в виде одного исполнительного файла и запускается из любого каталога, подключенного к компьютеру (он может быть расположен и на жестком диске, и, к примеру, на съёмном накопителе), не требует установки.

После запуска программы необходимо ознакомиться с соглашением и принять его, после чего перед вами предстанет непосредственно рабочее окно утилиты ASoft .NET Version Detector

ASoft .Net Version Detector 16 R2

Интерфейс программы прост.

На красном, зелёном и фиолетовом фоне вы можете увидеть возможные версии пакета, цветами сгруппированы версии, относящиеся к разным CLR (среда разработки Common Language Runtime): 1.0, 1.1, 2.0, 3.0, 3.5, 4.0 и 4.6.2. Номера тех версий из них, которые установлены в системе на данный момент, с указанием сервис паков (номеров пакетов крупных обновлений, service pack) выделены белым шрифтом. В примере выше это версии 2.0 sp2, 3.0 sp2, 3.5 sp1 и 4.6.2. Серым шрифтом, соответственно, выделяются неустановленные версии, либо неактуальные: 1.0, 1.1, 4.0 (в примере выше версия 4.0 неактуальна, она обновлена до версии 4.6.2).

Левее есть блок с повторяющейся иконкой Microsoft .NET

Microsot .NET

Если нажать на одну из этих иконок, то у вас откроется окно проводника с каталогом установки .NET Framework, по умолчанию это путь:

C:WindowsMicrosoft.NETFramework

Слева от каждой актуальной версии есть две кнопки с изображением стрелок:

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

Определение установленных версий .NET Framework по записям в системном реестре Windows

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

Открываем редактор реестра Windows

  • Запускаем утилиту Выполнить перейдя в ПускВсе программыСтандартные (в Windows 10 утилита Выполнить находится в каталоге Служебные), либо зажав на клавиатуре клавиши Пуск (на некоторых клавиатурах она отмечается как Win) и R
  • В открывшемся окне вбиваем команду
    regedit

    и жмём на клавишу Enter

В редакторе реестра переходим в следующую ветку:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDP

.NET Framework в редакторе реестра regedit

На примере со скриншота выше мы видим, что в системе установлены только две версии: 4.0 (ветка с названием 4.0) и 4.6.2 (ветка 4Client, параметр Version, значение 4.6.01586). В этом нет ничего страшного, для Windows 10 (с которой и снят последний скрин) это вполне нормально. Если каких-то версий будет недоставать для конкретных программ, то мы их обязательно установим. Но об этом поговорим ниже….

Какие версии .NET Framework устанавливать

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

В таблице ниже приведены соответствия версий .NET Framework и выпусков операционной системы Windows

Соответствие поддерживаемых версий .NET Framework в ОС Windows

*плюсом напротив каждого выпуска ОС Windows помечены поддерживаемые версии Framework
**зелёным цветом выделены версии Framework, интегрированные в распространяемые копии соответствующих выпусков ОС Windows
***.NET Framework 4.6.1 поставляется только в Windows 10, начиная с Version 1511

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

.NET Framework 1.1 заменяет версию 1.0
.NET Framework 3.0 заменяет версию 2.0
.NET Framework 3.5 заменяет версии 2.0 и 3.0
.NET Framework 4.5 заменяет версию 4.0
.NET Framework 4.5.1 заменяет версии 4.0 и 4.5
.NET Framework 4.5.2 заменяет версии с 4.0 по 4.5.1
.NET Framework 4.6 заменяет версии с 4.0 по 4.5.2
.NET Framework 4.6.1 заменяет версии с 4.0 по 4.6
.NET Framework 4.6.2 заменяет версии с 4.0 по 4.6.1

*подчёркиваю: версия 3.5 НЕ заменяет версию 1.0 и 1.1; версии 4.0 и все последующие НЕ заменяют версии 1.0, 1.1, 2.0, 3.0 и 3.5!

Т.е., в принципе, для полного комплекта на ОС Windows, начиная с Windows 7, могут быть установлены .NET Framework 3.5 и .NET Framework 4.6.2. В остальных версиях нет смысла, они будут заменяться свежими выпусками.

На ОС Windows XP же имеет смысл устанавливать .NET Framework 1.1 (если это действительно необходимо), .NET Framework 3.5 и .NET Framework 4.0. Думаю, это ясно.

Варианты установочных файлов .NET Framework

Если вы задаётесь вопросом «Как установить .NET Framework на компьютер?», то у вас есть два варианта:

  • Установка .NET Framework через online-установщик, ещё его называют web-установщик (небольшого размера исполнительный файл, который в процессе установки пакета .NET подключается через интернет к серверам Microsoft и выкачивает оттуда весь объём необходимых данных)
  • Установка .NET Framework через offline-установщик или автономный установщик (автономный исполнительный файл, содержащий в себе все необходимые данные, не требующий для установки подключения к сети интернет, но оттого имеющий значительный вес, размер)

Напомню, что очень просто получить ссылку для скачивания через утилиту ASoft .NET Version Detector, которая, при нажатии на иконку со стрелкой, сама откроет браузер со страницей загрузки автономного offline-установщика выбранной вами версии пакета .NET Framework на официальном сайте Microsoft

Возможные ошибки при установке .NET Framework и способы их решения

Как и с большинством любых других программ, с библиотеками .NET Framework могут возникать ошибки не только в процессе их работы, но и на этапе их установки. Выглядеть они могу по-разному, как пример — скриншот ниже

Ошибка установки .NET Framework

Первый способ решить проблемы установки Framework — воспользоваться утилитой от разработчика: Microsoft .NET Framework Repair Tool

В архиве сама утилита и документация к ней. Работа с программой интуитивно понятна, хотя и сопровождается подсказками только на английском языке: запускаете сохранённый исполнительный файл, принимаете соглашение, ждёте завершения исправлений и пытаетесь заново запустить установку пакета .NET Framework.

Microsoft .Net Framework Repair Tool

Если после всех попыток исправления ошибок проблема не пропадёт, то Repair Tool предложит вам отправить отчёт в компанию Microsoft для поиска решения.

Второй способ решить проблемы установки Framework — попытаться полностью удалить установленные библиотеки и инсталировать их заново. Ниже приведём два способа удаления пакета .NET

Как удалить .NET Framework

Удалить пакет .NET можно как в полуавтоматическом/ручном режиме, так и в автоматическом, при помощи специальной утилиты.

Ручной способ удаления .NET Framework

  1. Для начала из меню Пуск заходим в Панель управления Windows и открываем пункт Удаление программы (в режиме Категорий) или Программы и компоненты (в режиме отображения значков)
  2. Здесь нам надо удалить все строки, в которых встречается что-то связанное с .NET или с Framework
  3. После ручного удаления скачиваем версию Microsoft Fixit Program Install Uninstall для устранения неполадок, связанных с установкой и удалением программ
  4. Запускаем исполнительный файл из сохранённого архива, принимаем соглашение и в открывшемся окне выбираем рекомендованный пункт Выявить проблемы и установить исправления (рекомендуется)Microsoft Fixit Program Install Uninstall
  5. Если после анализа системы появились пункты с .NET Framework, то выбираем их и пытаемся исправить, делая это столько раз, сколько проблем было обнаружено, вновь запуская Fixit после исправления проблемы. Если таковые не обнаружились, либо все уже исправлены, а ошибки установки библиотек остались, то указываем пункт Нет в списке и повторяем процедуру устранения неполадок
  6. После проведённой процедуры удаления и устранения неполадок повторить попытку установки платформы .NET Framework

Автоматический способ удаления .NET Framework

Этот способ быстрее и проще предыдущего, поэтому он последний в списке по очерёдности, но никак не по доступности или действенности.

  1. Скачиваем архив утилиты .NET Framework Cleanup Tool и запускаем исполнительный файл из этого архива
  2. Принимаем соглашение
  3. В открывшемся окошке выбираем версию .NET Framework для удаления (советую вам сразу выбирать пункт All Versions)
  4. Нажимаем кнопку Cleanup Now .NET Framework Setup Cleanup Utility
  5. После завершения процесса удаления повторить попытку установки платформы .NET Framework

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

Содержание

  • Почему возникает ошибка Microsoft .NET Framework: «Initialization error»?
    • Microsoft .NET Framework не установлен
    • Установлена не правильная версия компонента
    • Повреждение компонента Microsoft .NET Framework
  • Вопросы и ответы

Ошибка Microsoft .NET Framework

Ошибка Microsoft .NET Framework: «Initialization error» связана с невозможностью использовать компонент. Причин этому может быть несколько. Возникает она на этапе запуска игр или программ. Иногда пользователи наблюдают ее при старте Виндовс. Эта ошибка никаким образом не связана с оборудованием или другими программами. Возникает непосредственно в самом компоненте. Давайте рассмотрим подробнее причины ее появления.

Скачать последнюю версию Microsoft .NET Framework

Если вы увидели такое сообщение, например, при старте Windows, это говорит о том, что некоторая программа стоит в автозагрузке и обращается к компоненту Microsoft .NET Framework, а тот в свою очередь выдает ошибку. Тоже самое при запуске определенной игры или программы. Существует несколько причин и вариантов решения проблемы.

Microsoft .NET Framework не установлен

Это особо актуально после переустановки операционной системы. Компонент Microsoft .NET Framework нужен не для всех программ. Поэтому, пользователи зачастую не обращают внимания на его отсутствие. Когда устанавливается новое приложение с поддержкой компонента, возникает следующая ошибка: «Initialization error».

Посмотреть наличие установленного компонента .NET Framework можно в «Панель Управления-Установка и удаление программ».

nalichie-v-sisteme-microsoft-net-framework-dlya-ustraneniya-oshibki-initialization-error

Если ПО действительно отсутствует, просто переходим на официальный сайт и качаем .NET Framework оттуда. Затем устанавливаем компонент как обычную программу. Перегружаем компьютер. Проблема должна исчезнуть.

Установлена не правильная версия компонента

Заглянув в список установленных программ на компьютере, вы обнаружили, что .NET Framework там присутствует, а проблема по прежнему возникает. Скорее всего компонент необходимо обновить до последней версии. Сделать это можно вручную, скачав нужную версию с сайта Microsoft или же с помощью специальных программ.

Маленькая утилита ASoft .NET Version Detector позволяет быстро загрузить необходимую версию компонента Microsoft .NET Framework. Нажимаем на зеленую стрелку напротив интересующей версии и скачиваем ее.

uznat-versiyu-net-framework-s-pomoshhyu-asoft-net-version-detector

Также, с помощью этой программы, можно посмотреть все версии .NET Framework установленные на компьютере.

После обновления, компьютер должен быть перегружен.

Повреждение компонента Microsoft .NET Framework

Последняя причина появления ошибки «Initialization error», может быть связана с повреждением файлов компонента. Это может быть последствием вирусов, неправильной установкой и удалением компонента, очисткой системы различными программами и т.п. В любом случае, Microsoft .NET Framework из компьютера нужно удалить и поставить заново.

Чтобы правильно деинсталлировать Microsoft .NET Framework, используем дополнительные программы, например утилиту .NET Framework Cleanup Tool.

Lumpics.ru

udalenie-microsoft-net-framework-s-pomoshhyu-utilityi-net-framework-cleanup-tool

Перегружаем компьютер.

Затем, с сайта Microsoft качаем нужную версию и устанавливаем компонент. После, еще раз перезапускаем систему.

После проведенных манипуляций ошибка Microsoft .NET Framework: «Initialization error» должна исчезнуть.

Еще статьи по данной теме:

Помогла ли Вам статья?

Главная » Уроки и статьи » Софт

При входе в систему и запуске приложений может появляться сообщение «Ошибка инициализации платформы .NET Framework 4». В Windows 10, как и в более ранних версиях операционной системы, эта проблема обычно обусловлена повреждением или отсутствием каких-либо компонентов. Неприятную ситуацию можно решить двумя способами, которые предоставлены ниже.

Переустановка компонентов

Для начала нужно удалить компоненты, которые уже присутствуют. Делается это в панели управления. Последнюю можно открыть, найдя ее с помощью поиска на панели задач. Также она есть в меню «Пуск» (папка «Служебные» в самом низу списка).

В панели требуется перейти в следующий раздел:

Далее нужно учитывать, что просто удалить компоненты нельзя. Слева сверху будет надпись, которая отвечает за отключение компонентов. Требуется нажать на нее.

В новом окне можно будет сразу заметить Framework. Необходимо убрать галочку напротив четвертой версии (4.6-4.8 в зависимости от версии системы), а затем кликнуть по кнопке «ОК», чтобы сохранить изменения.

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

Специализированные утилиты

Не всем известно, что производитель выпустил несколько приложений, которые могут устранять подобные ошибки в автоматическом режиме. По отзывам пользователей самой эффективной в этом конкретном случае является «.NET Framework Repair Tool».

Важно учитывать, что скачивать любые программы нужно только с официального сайта Microsoft: в противном случае никто не может гарантировать, что результат будет положительным.

Указанная программа не переведена на русский язык, но пользоваться ей несложно. Нужно лишь согласиться с условиями лицензии и дождаться, когда утилита проверит все компоненты. После этого появится список ошибок. Остается лишь кликнуть по кнопке «Next», чтобы приложение исправило их самостоятельно, если это возможно.

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

Подводя итоги, ошибка возникает по причине повреждения или отсутствия компонентов. Первое чаще всего является следствием наличия вирусов, а второе – устаревшей версии платформы.

Понравилось? Поделись с друзьями!


Дата: 21.01.2022
Автор/Переводчик: Wolf

29.03.2018 Ошибки и неисправности Задать вопросНаписать пост

Пользователи операционной системы корпорации Майкрософт различных версий могут столкнуться с сообщением о невозможности запуска приложения, по причине того, что операционная система не может инициализировать .NET Framework – компоненты, необходимой для работы ряда приложений. Возможный вид сообщения об ошибке:Как выглядит ошибка

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

Устранение проблемы путем установки/переустановки

Разберем основной способ устранения ошибки:

  1. Сначала необходимо скачать установочный дистрибутив. Рекомендуется устанавливать самую новую версию с официального сайта Майкрософт. На данный момент последней версией является 4.7.1. Скачать автономный установщик можно по ссылке — https://www.microsoft.com/ru-ru/download/details.aspx?id=55167. Автономный установщик позволит переустанавливать данный компонент даже при отсутствии подключение к сети Интернет.
  2. Когда загрузка файла завершится, нужно его запустить. Откроется окно установщика, вид которого будет следующим:Запуск установки
  3. Если программа установки обнаружит, что на компьютере пользователя уже имеется устанавливаемая версия, то будет предложено выполнить переустановку (восстановление).

Перезагрузите компьютер. Теперь программа должна работать. Если проблема решена, то больше можно не предпринимать никаких действий.

Существуют ситуации, когда нужно удалить пакет .NET Framework и затем его снова установить. Это может быть необходимо, когда штатный установщик не восстанавливает параметры компонента должным образом. Удалить компонент в Windows 7/8.1/10 можно через панель управления (открывается через «пуск» — кнопка с логотипом Windows). Найдите и выберите в списке установленных программ требуемую версию, затем нажмите «Удалить»:Удаление компонентов

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

Использование стандартных утилит для устранения неполадок

Кроме вышеописанного способа, можно воспользоваться другими вариантами:

  • .NET Framework Repair Tool попытается восстановить уже установленную редакцию. Скачать её можно по ссылке — https://www.microsoft.com/en-us/download/details.aspx?id=30135. После запуска утилита отобразит возможные недостатки текущей установки. Если, программа не обнаружит проблем, то будет просто создан текстовый файл – лог с описанием установленных компонентов.
  • .NET Framework Setup Verification Tool доступна для загрузки по ссылке https://msdnshared.blob.core.windows.net/media/2017/11/netfx_setupverifier_new.zip.Данная утилита проверяет только правильность установки компонентов и больше ничего не делает. Таким образом, в отличие от предыдущей программы не вносит изменения в компоненты. Если ошибки будут обнаружены, то утилита сообщит о проблемных местах. После запуска программа предложит указать версию, которую нужно проверить:

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

  • .NET Framework Cleanup Tool – выполняет полное удаление всех компонентов, выбранной редакции для последующей переустановки. Скачать можно здесь — https://msdnshared.blob.core.windows.net/media/2017/11/dotnetfx_cleanup_tool.zip. Вычищает все разделы реестра, касающиеся выбранной версии, удаляет все настройки. Подходит в тех случаях, когда другие средства не помогают. После работы данной утилиты, как правило, новая установка проходит без проблем и работоспособность приложений восстанавливается. После запуска утилиты предлагается выбрать, какая редакция будет удалена:Полное удаление компоненты

Нужно помнить, что данная утилита не позволит удалить компонент операционной системы. Например, в Windows 7 таким образом не получится удалить редакцию 2.0, а в последней версии Windows 10 — 4.7.

Reader Interactions

Ошибка «В вашем приложении возникло необработанное исключение» — как исправить?

Случается, что при запуске компьютера с операционной системой Windows появляется такая проблема, как необрабатываемое исключение в приложении net framework. Само сообщение об ошибке выглядит так и отображается в окне платформы microsoft.NET Framework: 

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

Ниже, тоже сообщение, но на английском языке

В чем причина ошибки «Unhandled exception has occurred in your application» в Windows и что делать? 

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

  1. Дело в антивирусе. Некоторые антивирусные программы, такие как Panda Antivirus, могут вызывать такую ошибку. Для того, чтобы проверить в антивирусе ли дело, временно отключите его или установите другой. 

  2. На компьютере могут быть установлены некоторые вредоносные программы или вирусы. Проверьте ваш компьютер и, если есть вирусы, удалите их.  

  3. Microsoft.NET Framework был неправильно установлен. Например из-за того, что файлы установщика содержали ошибку. В этом случае можно попробовать установить программу еще раз, скачать более новую версию с официального сайта Майкрософт.

  4. Если это не поможет, выполните сканирование SFC (проверка и восстановление целостности системных файлов Windows).

    1. Для этого в меню «Пуск»-«Выполнить» наберите cmd, а затем в командной строке команду: sfc /scannow. Система начнет сканировать файлы и через некоторое время выдаст результат. 

Установка или устранение неисправностей в Microsoft.NET Framework

Нужно проверить  состояние Microsoft.NET Framework — установлен ли он на компьютере? После чего, его можно либо установить (если установка не была проведена) или восстановить («отремонтировать»)

Какие действия нужно выполнить для установки или восстановления Microsoft.NET Framework:

  1. Закройте все открытые программы.

  2. Нажмите кнопку «Пуск» и выберите пункт «Выполнить». (Если у вас Windows10, используйте комбинацию клавиш на клавиатуре Win+R, где Win — клавиша с эмблемой Windows ) 

  3. Наберите команду «control» в окне «Открыть» и нажмите кнопку «ОК». Откроется «Панель управления».

  4. Выберите пункт «Программы и компоненты»

  5. Просмотрите список программ, найдите Microsoft.NET Framework (на картинке ниже Microsoft.NET Framework установлен):в данном случае нет фреймворк установлен успешно

    В чем причина ошибки «Unhandled exception has occurred in your application» в Windows и что делать? 

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

    1. Дело в антивирусе. Некоторые антивирусные программы, такие как Panda Antivirus, могут вызывать такую ошибку. Для того, чтобы проверить в антивирусе ли дело, временно отключите его или установите другой. 

    2. На компьютере могут быть установлены некоторые вредоносные программы или вирусы. Проверьте ваш компьютер и, если есть вирусы, удалите их.  

    3. Microsoft.NET Framework был неправильно установлен. Например из-за того, что файлы установщика содержали ошибку. В этом случае можно попробовать установить программу еще раз, скачать более новую версию с официального сайта Майкрософт.

    4. Если это не поможет, выполните сканирование SFC (проверка и восстановление целостности системных файлов Windows).

      1. Для этого в меню «Пуск»-«Выполнить» наберите cmd, а затем в командной строке команду: sfc /scannow. Система начнет сканировать файлы и через некоторое время выдаст результат. 

    Установка или устранение неисправностей в Microsoft.NET Framework

    Нужно проверить  состояние Microsoft.NET Framework — установлен ли он на компьютере? После чего, его можно либо установить (если установка не была проведена) или восстановить («отремонтировать»)

    Какие действия нужно выполнить для установки или восстановления Microsoft.NET Framework:

    1. Закройте все открытые программы.

    2. Нажмите кнопку «Пуск» и выберите пункт «Выполнить». (Если у вас Windows10, используйте комбинацию клавиш на клавиатуре Win+R, где Win — клавиша с эмблемой Windows ) 

    3. Наберите команду «control» в окне «Открыть» и нажмите кнопку «ОК». Откроется «Панель управления».

    4. Выберите пункт «Программы и компоненты»

    5. Просмотрите список программ, найдите Microsoft.NET Framework (на картинке ниже Microsoft.NET Framework установлен):в данном случае нет фреймворк установлен успешно

    6. Если вы не нашли программу в списке, значит Microsoft.NET Framework у вас не установлен.  Нажмите здесь, чтобы загрузить последнюю версию Microsoft .NET Framework с веб-сайта Microsoft. После чего проведите установку. 

    7. Если вы видите программу в списке (как на рисунке выше) и она не работает (работает неправильно, с ошибкой «необрабатываемое исключение в приложении net framework»), то нужно ее исправить (переустановить).  Для этого:

    8. Выберите Microsoft.NET Framework, а затем кликните правой кнопкой мыши и выберите «Изменить/Удалить».

    9. В отрывшемся окне выберите команду «Восстановить исходное состояние .NET Framework», а затем нажмите «Далее».

    10. Следуйте инструкциям, и потом перезагрузите компьютер

    Если проблема не решена, попробуйте безопасную загрузку Windows.

    Как выполнить безопасную загрузку?


    Чтобы воспользоваться параметром безопасной загрузки, выполните следующие действия.

    1. Нажмите перезагрузить и во время перезагрузки нажимайте клавишу F8 на клавиатуре. 

    2. Выберите опцию с помощью клавиш со стрелками на клавиатуре, когда появится меню дополнительных параметров Windows, а затем нажмите клавишу ENTER.

    3. Мы рекомендуем запустить Windows в чистой среде загрузки, чтобы убедиться, что эта проблема не вызвана фоновой программой (выберите параметры как на рисунке выше).

    4. После запуска компьютера проверьте, решена ли проблема с установкой Microsoft.NET Framework

    Выполните поиск неисправностей аппаратного обеспечения

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

    1. Чтобы определить это оборудование, введите в окне запуска (Пуск -> Выполнить или WIN+R) следующую команду: «%systemroot%system32msdt.exe -id DeviceDiagnostic» и нажмите клавишу Enter или нажмите кнопку OKдиагностика неисправностей в ПО
      Чтобы воспользоваться параметром безопасной загрузки, выполните следующие действия.

      1. Нажмите перезагрузить и во время перезагрузки нажимайте клавишу F8 на клавиатуре. 

      2. Выберите опцию с помощью клавиш со стрелками на клавиатуре, когда появится меню дополнительных параметров Windows, а затем нажмите клавишу ENTER.

      3. Мы рекомендуем запустить Windows в чистой среде загрузки, чтобы убедиться, что эта проблема не вызвана фоновой программой (выберите параметры как на рисунке выше).

      4. После запуска компьютера проверьте, решена ли проблема с установкой Microsoft.NET Framework

      Выполните поиск неисправностей аппаратного обеспечения

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

      1. Чтобы определить это оборудование, введите в окне запуска (Пуск -> Выполнить или WIN+R) следующую команду: «%systemroot%system32msdt.exe -id DeviceDiagnostic» и нажмите клавишу Enter или нажмите кнопку OKдиагностика неисправностей в ПО
      2. Следуйте инструкциям на экране, чтобы определить неисправное оборудование.
      3. Вы также можете исправить аппаратные проблемы на странице настроек, как показано на рисунке ниже.

      Зайдите «Панель управления», кликните кнопкой мышки на стрелочку возле надписи и выберите «Все элементы панели управления», далее нажмите «Устранение неполадок» и следуйте инструкциям. 

      устранение неполадок в виндовз при установке net framework

      Зайдите «Панель управления», кликните кнопкой мышки на стрелочку возле надписи и выберите «Все элементы панели управления», далее нажмите «Устранение неполадок» и следуйте инструкциям. 

      устранение неполадок в виндовз при установке net framework

Возможно вас заинтересует:

Решаем проблему не обрабатываемого исключения в приложении Microsoft .NET Framework

Microsoft .NET Framework, является необходимым компонентом для работы многих программ и игр. Он отлично совместим с Windows и большинством приложений. Неполадки в его работе возникают не часто, но все же такое может быть.

Устанавливая новое приложение, пользователи могут увидеть окно следующего содержания: «Ошибка .NET Framework, необрабатываемое исключение в приложении». При нажатии кнопки «Продолжить», установленное ПО попытается осуществить запуск игнорируя ошибку, но все же корректно работать не будет.

Почему возникает необрабатываемое исключение в приложении Microsoft .NET Framework?

Сразу хочу сказать, что если эта проблема появилась после установки нового программного обеспечения, то дело именно в нем, а не в самом компоненте Microsoft .NET Framework.

Требования для установки нового приложения

Установив, к примеру, новую игру вы можете увидеть окно с предупреждением об ошибке. Первое, что необходимо сделать в этом случае, проверить условия для установки игры. Довольно часто, для своей работы программы используют дополнительные компоненты. Это может быть и DirectX, библиотека C++ и многое другое.

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

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

Переустановка Microsoft .NET Framework

Для устранения ошибки, можно попробовать переустановить компонент Microsoft .NET Framework.
Идем на официальный сайт и скачиваем актуальную версию. Затем удаляем предыдущий Microsoft .NET Framework из компьютера. Воспользоваться стандартным мастером Виндовс будет недостаточно. Для полного удаления необходимо привлекать другие программы, которые вычищают из системы оставшиеся файлы и записи системного реестра. Я это делаю с помощью CCleaner.

После удаления компонента, можем устанавливать Microsoft .NET Framework заново.

Переустановка программы выдающей ошибку

Тоже самое нужно сделать с программой, которая привела к ошибке. Обязательно скачивайте ее с официального сайта. Удаление по тому же принципу, через CCleaner.

Использование русских символов

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

Можно воспользоваться другим способом. В тех же настройках игры, меняем место хранения файлов. Создаем новую папку на английском языке или выбираем уже имеющуюся. Как и в первом случае, просматриваем путь. Для верности перегружаем компьютер и заново запускаем приложение.

Драйвера

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

Посмотреть состояние драйверов, можно в диспетчере задач. В свойствах оборудования, переходим во вкладку «Драйвер» и нажимаем обновить. Для выполнения данной задачи, на компьютере должно быть активное подключение к интернету.

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

После чего компьютер должен быть перегружен.

Системные требования

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

Если причина именно в этом, можно попробовать, установить более раннюю версию программы, они обычно менее требовательны к системе.

Приоритет

Еще одной причиной возникновения ошибок в .NET Framework , может быть процессор. Во время работы с компьютером, постоянно запускаются и останавливаются различные процессы, которые имеют разные приоритеты.

Чтобы решить проблему, необходимо зайти в «Диспетчер задач» и во вкладке процессы, найти тот, что соответствует вашей игре. Нажав на нем правой кнопкой мыши, появиться дополнительный список. В нем необходимо найти «Приоритет» и выставить там значение «Высокий». Таким образом производительность процесса увеличиться и ошибка может исчезнуть. Единственный недостаток метода, в том, что производительность других программ несколько снизиться.

Мы рассмотрели самые популярные проблемы при возникновении ошибки .NET Framework «Необрабатываемое исключение в приложении». Проблема хоть и не распространенная, но доставляет немало хлопот. Если ни один вариант не помог, можно написать в службу поддержки программы или игры, которую вы устанавливали.

Источник

Как исправить ошибку «Необрабатываемое исключение в приложении .NET Framework»

После установки программы ее запуск может прерваться ошибкой «Необрабатываемое исключение в приложении», которая указывает на неполадки платформы Microsoft .NET Framework. Если и удастся ее запустить, нажатием на кнопку «Продолжить», то, скорее всего, будет работать некорректно. Сбой также может возникнуть при запуске игры, загруженной из Магазина Майкрософт, или после входа в Windows. В некоторых случаях в сообщении указывается конкретная причина ее возникновения.

Чем вызвана ошибка?

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

  1. В ходе установки некоторые компоненты ПО были перемещены антивирусом на карантин. Поэтому требуется временное отключение защиты в реальном времени или его замена другим антивирусным пакетом.
  2. Повреждены компоненты платформы .NET Framework.
  3. В системе присутствуют вредоносное ПО. Требуется полная проверка системы на вирусы.
  4. Запуску приложения препятствует фоновый процесс. Исключить его причастность можно в режиме чистой загрузки.

Замена антивирусной программы

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

Откройте Панель управления с помощью системного поиска или командой control , запущенной из окна «Выполнить» (Win + R).

Переключите просмотр на категории в правом верхнем углу и кликните на вкладку «Удалить программы».

Найдите в списке антивирус, щелкните по нему правой кнопкой мыши и выберите «Удалить». Следуйте инструкциям на экране до завершения удаления.

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

Запуск в режиме чистой загрузки

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

Перейдите в конфигурацию системы командой msconfig , запущенной из окна командного интерпретатора (Win + R).

В меню Службы отметьте флажком опцию «Не отображать службы Майкрософт» и кликните на кнопку «Отключить все».

В меню Автозагрузка нажмите на «Открыть диспетчер задач». Отключите все программы, которые присутствуют в списке, и перезагрузите компьютер.

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

Установка последней версии .NET Framework

Ошибку необрабатываемого исключения можно решить путем установки последней версии платформы. Для этого с сайта Microsoft, на который можно перейти по запросу «download net framework», загрузите последнюю версию пакета.

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

Откройте раздел Компоненты и программы командой appwiz.cpl из окна «Выполнить».

В левой панели щелкните на «Включение или отключение компонентов Windows».

Найдите версии.NET Framework и проверьте, отмечены ли они флажком. Если нет, после установки флажков сохраните изменения на «ОК», и перезагрузите компьютер.

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

Также исправить повреждения установленных пакетов можно с помощью инструмента восстановления. Загрузите его из сайта, который доступен по запросу «средство восстановления .NET Framework».

После загрузки запустите диагностику и следуйте инструкциям до ее завершения.

Восстановление системных файлов

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

Откройте командную строку с правами администратора с помощью поиска Windows или из меню Win + X.

Проверьте систему командой sfc /scannow .

После ее завершения перезагрузите компьютер и выполните следующую:

DISM /Online /Cleanup-Image /RestoreHealth

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

Источник

Необрабатываемое исключение в приложении net framework windows 10

Вопрос

Привет всем. Проблема такая: иногда при включении компьютера вылетает табличка «Платформа microsoft.NET Framework— не обрабатываемое исключение в приложении. при нажатии кнопки «продолжить» приложение проигнорирует ошибку и попытается продолжить работу. при нажатии кнопки «выход» приложение немедленно завершит работу. и далее.

Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.Threading.ThreadAbortException: Поток находился в процессе прерывания.
в System.StubHelpers.StubHelpers.CreateCleanupList(IntPtr pCleanupWorkList)
в System.Drawing.SafeNativeMethods.Gdip.GdipCreateFontFromLogfontW(HandleRef hdc, Object lf, IntPtr& font)
в System.Drawing.Font.FromLogFont(Object lf, IntPtr hdc)
в System.Drawing.Font.FromHfont(IntPtr hfont)
в System.Drawing.SystemFonts.get_DefaultFont()
в System.Windows.Forms.Control.get_DefaultFont()
в System.Windows.Forms.Control.get_FontHandle()
в System.Windows.Forms.Control.SetWindowFont()
в System.Windows.Forms.Control.OnHandleCreated(EventArgs e)
в System.Windows.Forms.WebBrowserBase.OnHandleCreated(EventArgs e)
в System.Windows.Forms.Control.WmCreate(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.WebBrowserBase.WndProc(Message& m)
в System.Windows.Forms.WebBrowser.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8745 (WinRel.050727-8700)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-
thostmgr
Версия сборки: 2.0.0.1
Версия Win32: 0.0.0.17
CodeBase: file:///C:/Users/Alexe/AppData/Roaming/Temp/TasksHost/thostmgr.exe
—————————————-
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8745 (WinRel.050727-8700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8750 (QFE.050727-8700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8745 (WinRel.050727-8700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-
thost32
Версия сборки: 1.0.0.22
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Users/Alexe/AppData/Roaming/Temp/TasksHost/thost32.DLL
—————————————-
System.Management
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8745 (WinRel.050727-8700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Management/2.0.0.0__b03f5f7f11d50a3a/System.Management.dll
—————————————-
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8745 (WinRel.050727-8700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
—————————————-
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.8745 (WinRel.050727-8700)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
—————————————-

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

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

Пожалуйста помогите разобраться с данной проблемой и как её устранить(((

Источник

Данная статья создавалась как попытка продолжить изучение не достаточно хорошо знакомой для меня темы восстановления работоспособности [приложений] .Net Framework в системах Windows, а так же поиска проблем ошибок в Net Framework приложениях. Очевидно, что все тут перечисленное представляет собой достаточно упрощенный подход к изучению структур .Net-приложений, тем не менее, в некоторых случаях достаточный для выявления причин неисправностей.

.NET Framework — программная платформа, основой которой является общеязыковая среда исполнения (Common Language Runtime, CLR) байт-кода «промежуточного языка высокоуровневого ассемблера». Из определения «общеязыковая» следует, что она предназначается для выполнения кода модулей, написанных на множестве языков программирования. Получила дальнейшее развитие в виде .NET Core.

Основная концепция создания .Net Framework заключалась в обеспечении свободы разработки, обусловленной возможностью создавать приложения с использованием множества языков программирования, способных исполняться на широком спектре устройств, работающих под разнообразными операционных системах [мультиязычность и кроссплатформенность]. Программа для платформы .NET Framework, в начале исполнения переводится компилятором в единый для .NET промежуточный байт-код «высокоуровневого ассемблера» виртуальной машины .NET (Common Intermediate Language, CIL — ранее известного как Microsoft Intermediate Language, MSIL), называемый в контексте .NET сборкой (assembly). Далее получившийся код либо исполняется виртуальной машиной Common Language Runtime (общеязыковая среда выполнения, CLR), либо транслируется утилитой NGen.exe в исполняемый код для определенного целевого процессора. И на финальном этапе, встроенный в виртуальную машину CLR компилятор «на лету» (в режиме реального времени) преобразует промежуточный байт-код в машинные коды целевого процессора [для непосредственного исполнения кода ядром].

В некотором смысле .Net Framework это система в системе. Она обеспечивает множество собственных механизмов: управление виртуальной памятью, система безопасности, загрузчик модулей, механизм исключений (обработки ошибок),модель многопоточности, изолированная среда выполнения приложений и многое другое. Тем самым .Net Framework как бы создает еще один уровень абстракции.

Поскольку мы упомянули некий «высокоуровневый ассемблер» виртуальной машины .NET, становится очевидным что в .Net Framework мы имеем дело с так называемым «управляемым» кодом.

Управляемый код (managed code) — код на языке «высокоуровневого ассемблера», исполняемый под управлением (внутри) виртуальной машины .NET CLR.

В приложениях с управляемым кодом, бинарный код, получающийся на выходе компилятора, получается в формате промежуточного языка (Microsoft Intermediate Language, MSIL), который является платформонезависимым. Когда управляемый код исполняется, среда выполнения преобразует его в обычный машинный код конкретной процессорной архитектуры (х86, х64 или IA64).

CLR компилирует MSIL в команды процессора [целевой архитектуры].

Процесс генерации машинного кода из кода MSIL называется компиляцией на лету (just-in-time (JIT) compiling). После того, как JIT-компилятор (jitter) скомпилировал MSIL для определенного метода, машинный код этого метода остается в памяти. Если когда-либо еще данный метод будет вызван, машинный код просто выполняется (поскольку он уже размещен в памяти) и JIT-компилятор может вообще в этом случае не вовлекаться в процесс.

Исключения в .NET

Поскольку популярность .Net платформы с каждым годом набирает обороты, в валовом отношении растет и количество ошибок .Net Framework, возникающих в коде. С другой стороны, неоспоримым плюсом является то, что по сравнению с неуправляемыми (классическими) приложениями, управляемые приложения меньше подвержены появлению в них [определенных видов] ошибок. Тем не менее, как и любой другой тип приложений, .NET-приложения в процессе своего функционирования сталкиваются с ошибками времени выполнения кода, иными словами — с некоторыми видами исключений.

Модель исключений в .NET работает поверх системного механизма обработки структурных исключений Windows (SEH), что обеспечивает объектно-ориентированную модель исключений, позволяющую предоставлять довольно детальную информацию об исключениях.

В момент возникновения исключения, CLR начинает поиск блока Catch (тип которого соответствует типу исключения) в стеке вызовов. В случае, когда ни один из блоков Catch не отвечает типу исключения (обработчик не найден), исключение считается необработанным (unhandled exception). Необработанное исключение указывает на ситуацию, не предусмотренную разработчиком приложения, и обычно считается признаком серьезной ошибки. Системный механизм WER производит запись в Журнале событий (раздел Приложение) и на экран выдается информационное окно (внешний вид может варьироваться в зависимости от версии):

clr20r3

Фактически на этом [моменте] работа сбойного приложения прекращается. Самая информативная для технического инженера часть — это сигнатуры проблемы, которая в Журнале событий (раздел Приложение) и в поле Подробности проблемы информационного окна дает нам некоторое представления о деталях сбоя:

Сигнатура проблемы:

  Имя события проблемы: CLR20r3

  Сигнатура проблемы 01: mmc.exe

  Сигнатура проблемы 02: 6.1.7601.23892

  Сигнатура проблемы 03: 5990c6ab

  Сигнатура проблемы 04: mscorlib

  Сигнатура проблемы 05: 2.0.0.0

  Сигнатура проблемы 06: 5c9c4d2b

  Сигнатура проблемы 07: 2d59

  Сигнатура проблемы 08: 79

  Сигнатура проблемы 09: System.Security.Security

  Версия ОС: 6.1.7601.2.1.0.256.48

  Код языка: 1049

В случае, описанном выше, имеет место падение оснастки Просмотр Событий (eventvwr.exe), которая работает через консоль управления (mmc.exe). Далее приведем описание полей сигнатуры:

Сигнатура Описание
сигнатура_01 Имя процесса программы (исполняемого образа/файла), в контексте выполнения которого возникло исключение ( <= 32 знака).
Сигнатура_02 Версия сборки [исполняемого образа].
Сигнатура_03 Штамп времени [исполняемого образа].
Сигнатура_04 Имя библиотеки (из состава приложения), сборки или иной файл из состава .Net Framework, при исполнении функции [из] которой возникла ошибка ( <= 64 знака).
Сигнатура_05 Версия (аварийной) библиотеки/сборки приложения/платформы .Net Framework, в которой произошло исключение.
Сигнатура_06 Штамп времени проблемной (аварийной) сборки.
Сигнатура_07 Определение (маркер) метода (в таблице MethodDef) и типа, в котором произошло исключение (с «обрезанным» старшим байтом 0x06, типом маркера). Идентифицируют запись в соответствующей таблице метаданных.
Сигнатура_08 Смещение инструкции (команды) в рамках метода в коде на промежуточном языке (IL), при выполнении которой произошло исключение. Взяв величину смещения, при помощи любого .Net-рефлектора можно найти некорректный код.
Сигнатура_09 Тип вброшенного исключения (название класса или пространства имен .Net).

Для формирования полной картины сбоя, потребуется взять во внимание совокупность всех сигнатур проблемы, в комплексе могущих дать понимание о природе сбоя (особое внимание обратить на имя класса-источника). Ну и для полноты картины можно привести открытые свойства типа System.Exception, которые можно найти в отчете отладчика/аварийном дампе памяти после прекращения работы приложения:

Свойство Тип Описание
message String Содержит осмысленный (иногда) текст, описывающий причину исключения. Сообщение содержит технические подробности, которые могут оказаться полезными для технических специалистов/разработчиков.
data IDictionary Ссылка на список пар в формате параметр-значение. Непосредственно перед вбросом исключения, код добавляет запись в этот набор.
stacktrace String Имена/сигнатуры методов, вызов которых привел к возникновению исключения. Помогает обнаружить объект, являющийся источником исключения.
source String Имя сборки, вбросившей исключение.
innerexception Exception Указатель на «предыдущее» исключение (в случае, если текущее исключение было вброшено в ходе обработки другого). Часто содержит значение null. Тип Exception содержит также открытый метод GetBaseException, анализирующий список внутренних исключений и возвращающий самое первое.
helpURL String URL документации с информацией об исключении. Обычно содержит null, поскольку с точки зрения безопасности сведения о необработанных исключениях не должны быть доступны.
TargetSite MethodBase Имя метода, ставшего источником исключения.

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

Метод 1: отладка дампа .Net-приложения

Далеко не всегда у нас имеется возможность «живой отладки» сбойного .Net-приложения в реальном времени, непосредственно на системе пользователя, значительно чаще приходится довольствоваться созданным аварийным дампом. Стоит напомнить, что в случае приложений, написанных для платформы .Net Framework, мы имеем дело с управляемым кодом, в противоположность типовому неуправляемому коду классических приложений. Но так просто до управляемого кода с помощью отладчика не добраться.

Логично предположить, что если .NET представляет собой еще один уровень абстракции, то по сравнению с классическими (native) приложениями, отлаживать .Net-приложения классическими методами становится сложнее!!

Когда .Net-приложение «падает» (завершается аварийно) или «подвисает», специалист тут же получает большую проблему, поскольку очень сложно продраться сквозь нативный ассемблерный код, исследовать стеки вызовов, найти исходные тексты и строки структур .NET-приложения. Чтобы помочь исследователям увидеть при анализе дампа или живой отладке разнообразные структуры .Net-приложения, легче баражировать через комбинации управляемого и неуправляемого кода, специалисты Microsoft разработали расширение отладчика SOS, весь функционал которого сосредоточен в библиотеке sos.dll (являющейся частью .NET Framework).

SOS (Son of STRIKE) — расширение отладчика, которое можно использовать для отладки .NET-приложений с использованием серии отладчиков из комплекта Debugging Tools for Windows. Расширение предоставляет воистину великолепный набор команд, который позволяет разработчикам глубоко внедряться в CLR: просматривать очередь финализаторов, управляемые кучи, управляемые потоки, расставлять точки останова в управляемом коде, разбирать исключения и многое другое. Когда .NET Framework был в версии 1.0, разработчики Microsoft использовали расширение под названием STRIKE для решения определенных проблем в коде .NET, позднее, когда .NET Framework «повзрослел», расширение отладчика стало именоваться как Son of STRIKE (SOS).

Проблемы в .Net-приложениях [с управляемым кодом] могут диагностироваться из без расширения SOS, он этот подход требует превосходного знания разнообразных внутренних структур .Net. С расширением SOS все существенно упрощается, позволяя исследователям/разработчикам сфокусироваться на поиске источника проблемы. Поэтому расширение SOS предоставляет все необходимое для отладки приложений, в которых скомбинированы управляемый и неуправляемый код.

Создание дампа приложения

  1. В данном сценарии подразумевается, что мы уже имеем на руках дамп сбойного приложения (полученный от пользователя). Если дамп приложения необходимо создать, то можно посоветовать использовать один из следующих способов: с использованием CDB, при помощи ProcDump, с использованием встроенного механизма WER. Способ с ProcDump один из самых простых, поэтому скачиваем ProcDump.
  2. Запускаем сбойное приложение через ProcDump с использованием команды:

    procdump.exe -accepteula -e -w <имя_сбойного_приложения.exe> c:temp

    где параметр c:temp — любая временная директория по вашему выбору.

  3. Дожидаемся когда в приложении возникнет исключение;
  4. После падения приложения в каталоге C:TEMP получаем дамп приложения (файл с расширением .dmp);

Изучение дампа приложения

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

  1. Устанавливаем пакет Debugging Tools for Windows.
  2. Запускаем отладчик WinDbg. По предварительной настройке отладчика можете почитать эту статью.
  3. Открываем дамп приложения через меню FileOpen Crash Dump…. Мы работаем с дампом процесса, поэтому отладчик должен автоматически загрузить версию DAC (компонент доступа к данным, используемый SOS для связи с CLR), соответствующую версии CLR, используемую .Net-приложением на другой станции (на которой создавался дамп). Разрядность (32/64-бит) так же имеет значение. DAC в данном случае это библиотека mscordacwks.dll, которая входит в состав пакета .NET Framework.
  4. Если у Вас на компьютере нет подходящей версии .Net Framework, то можно загрузить требуемый DAC с публичного сервера символов Microsoft. Для этого, на всякий случай, если предварительная настройка на получение символов у вас не проведена, мы может настроиться вручную и выполнить серию команд:

    .sympath+ srv*
    !sym noisy

  5. Важно отметить, что при отладке с использованием расширения SOS необходимо использовать правильную версию SOS. Для загрузки требуемой отлаживаемому приложению версии DAC, присоединяем отладчик к .Net-приложению, после чего расширение SOS (sos.dll) загружается автоматически. Для этого выполним следующую команду:

    .cordll -ve -u -l

    если по каким-либо причинам этого не произошло, можно выполнить ручную загрузку SOS:

    .loadby sos clr              ;для 4.0 версии CLR

    .loadby sos mscorwks         ;для 1.0 и 2.0 версий CLR

  6. Проверяем работоспособность расширения путем выполнения команды !sos.help:

    0:006> !sos.help

    ——————————————————————————-

    SOS is a debugger extension DLL designed to aid in the debugging of managed

    programs. Functions are listed by category, then roughly in order of

    importance. Shortcut names for popular functions are listed in parenthesis.

    Type «!help <functionname>» for detailed info on that function.

    . . .

    . . .

    . . .

    Выполняем команду !sos.pe:

    0:006> !sos.pe

    Exception object: 0000000004ff75f8

    Exception type: System.Reflection.TargetInvocationException

    Message: Адресат вызова создал исключение.

    InnerException: System.Security.SecurityException, use !PrintException 0000000004ff7188 to see more

    StackTrace (generated):

        SP               IP               Function

        0000000003BF6390 000007FEE81C2501 Microsoft_ManagementConsole_ni!Microsoft.ManagementConsole.Internal.SnapInMessagePumpProxy.OnThreadException(System.Object, System.Threading.ThreadExceptionEventArgs)+0x31

        0000000003BF63D0 000007FED415E910 System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.OnThreadException(System.Exception)+0xa0

        0000000003BF6440 000007FED416BD0C System_Windows_Forms_ni!System.Windows.Forms.Control.WndProcException(System.Exception)+0x1c

        0000000003BF6470 000007FED46C38AC System_Windows_Forms_ni!System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)+0xbafd9c

    StackTraceString: <none>

    HResult: 80131604

    There are nested exceptions on this thread. Run with nested for details

    В принципе, мы могли сразу получить развернутый вывод по всем имеющимся вложенным объектам исключений командой !sos.pe -nested. Но можем использовать и другую стратегию: двигаться вниз по цепочке вложенных исключений. Выведем информацию по вложенному исключению командой (или щелчком по ссылке) !PrintException 0000000004ff7188 или !sos.pe 0000000004ff7188 (где аргумент команды — адрес объекта исключения):

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    0:006> !PrintException 0000000004ff7188

    Exception object: 0000000004ff7188

    Exception type: System.Security.SecurityException

    Message: Запрошенный доступ к реестру запрещен.

    InnerException: <none>

    StackTrace (generated):

        SP               IP               Function

        0000000003BF83C0 000007FED6824B78 mscorlib_ni!Microsoft.Win32.RegistryKey.OpenSubKey(System.String, Boolean)+0x9f6cc8

        0000000003BF8430 000007FED436CC57 System_Windows_Forms_ni!System.Windows.Forms.LinkUtilities.GetIELinkBehavior()+0x77

        0000000003BF84A0 000007FED436D3F5 System_Windows_Forms_ni!System.Windows.Forms.LinkUtilities.EnsureLinkFonts(System.Drawing.Font, System.Windows.Forms.LinkBehavior, System.Drawing.Font ByRef, System.Drawing.Font ByRef)+0x35

        0000000003BF8500 000007FED439D6A5 System_Windows_Forms_ni!System.Windows.Forms.LinkLabel.OnPaint(System.Windows.Forms.PaintEventArgs)+0x435

        0000000003BF8980 000007FED3B2B719 System_Windows_Forms_ni!System.Windows.Forms.Control.PaintWithErrorHandling(System.Windows.Forms.PaintEventArgs, Int16, Boolean)+0xa9

        0000000003BF89F0 000007FED3B30A55 System_Windows_Forms_ni!System.Windows.Forms.Control.WmPaint(System.Windows.Forms.Message ByRef)+0x5f5

        0000000003BF8D80 000007FED3B142F7 System_Windows_Forms_ni!System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message ByRef)+0x4e7

        0000000003BF8F30 000007FED3B09AF1 System_Windows_Forms_ni!System.Windows.Forms.Label.WndProc(System.Windows.Forms.Message ByRef)+0x41

        0000000003BF8FE0 000007FED3B13D27 System_Windows_Forms_ni!System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message ByRef)+0x47

        0000000003BF9030 000007FED3B13BC6 System_Windows_Forms_ni!System.Windows.Forms.NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)+0xb6

    StackTraceString: <none>

    HResult: 8013150a

    There are nested exceptions on this thread. Run with nested for details

    тут у нас видно сразу и свойство Message, содержащее осмысленное описание ошибки и на вершине стека непосредственно функцию OpenSubKey, вызвавшую исключение. Теперь можно посмотреть CLR-стек для активного потока процесса и найти там интересующую нас функцию OpenSubKey (вывод сокращен до данных интересующей нас функции):

    0:006> !clrstack p l

    OS Thread Id: 0xd5c (6)

    . . .

    . . .

    0000000003bf83c0 000007fed436cc56 Microsoft.Win32.RegistryKey.OpenSubKey(System.String, Boolean)

        PARAMETERS:

            this = <no data>

            name = <no data>

            writable = <no data>

        LOCALS:

            <no data>

            <no data>

            <no data>

    . . .

    . . .

    в данном случае почему то не видно параметров и переменных, возможно это объясняется тем, что вызываемый метод является функцией WinAPI и входные параметры в неё передаются как-то иначе. В случае же наличия параметров, можно выполнить команду !sos.do XxXXXXXXXX — с указанием адреса, который будет виден в выводе команды clrstack для данного метода. Таким образом мы надеемся получить подробную информацию об объекте, попытка доступа к которому завершилась возбуждением исключения.
    Но поскольку в нашем случае параметров не видно, попробуем подойти к вопросу с другой стороны. Запрашиваем список всех объектов, находящихся в настоящее время в стеке текущего потока (вывод сокращен):

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    0:006> !dumpstackobjects

    OS Thread Id: 0xd5c (6)

    RSP/REG          Object           Name

    . . .

    0000000003bf74f8 0000000004ff70e0 System.Runtime.CompilerServices.RuntimeHelpers+CleanupCode

    0000000003bf7500 0000000004ff7070 System.Environment+ResourceHelper+GetResourceStringUserData

    0000000003bf7748 0000000004ff70e0 System.Runtime.CompilerServices.RuntimeHelpers+CleanupCode

    0000000003bf7778 0000000004ff70a0 System.Runtime.CompilerServices.RuntimeHelpers+TryCode

    0000000003bf7780 0000000004ff7070 System.Environment+ResourceHelper+GetResourceStringUserData

    0000000003bf7788 0000000004ff6dd0 System.String

    0000000003bf7da8 0000000004ff6dd0 System.String

    0000000003bf7df0 0000000004a79cb8 System.Threading.Thread

    0000000003bf7e38 0000000004a79cb8 System.Threading.Thread

    0000000003bf81f0 0000000004ff5e58 System.String

    0000000003bf81f8 0000000004ff7188 System.Security.SecurityException

    0000000003bf8200 0000000004abeca8 Microsoft.Win32.RegistryKey

    0000000003bf8210 0000000004ff7188 System.Security.SecurityException

    0000000003bf8230 0000000004ff7188 System.Security.SecurityException

    0000000003bf8268 0000000004ff61a0 Microsoft.Win32.SafeHandles.SafeRegistryHandle

    0000000003bf82e8 0000000004abeca8 Microsoft.Win32.RegistryKey

    0000000003bf8300 0000000004ff7188 System.Security.SecurityException

    0000000003bf8308 0000000004abeca8 Microsoft.Win32.RegistryKey

    0000000003bf8310 0000000004ff7188 System.Security.SecurityException

    0000000003bf8320 0000000004ff5e58 System.String

    0000000003bf8398 0000000004ff5e58 System.String

    0000000003bf83a8 0000000004ff7120 System.String

    0000000003bf83b0 0000000004ff7188 System.Security.SecurityException

    0000000003bf83f0 0000000004ff61a0 Microsoft.Win32.SafeHandles.SafeRegistryHandle

    0000000003bf8420 0000000004ff5ce0 System.Security.Permissions.RegistryPermission

    0000000003bf8458 0000000004ff5d20 System.Security.FrameSecurityDescriptor

    . . .

    Так как команда !dumpstackobjects проходит по стеку вверх, в выводе её мы можем заметить повторение некоторых элементов по несколько раз, поскольку они передаются в качестве параметров ко многим функциям. В стеке можно наблюдать несколько объектов System.Security.SecurityException, но если вы обратите внимание на значение, то заметите, что все они ссылаются на один и тот же экземпляр объекта 0000000004ff7188. Давайте посмотрим на содержимое данного объекта:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    0:006> !dumpobj 0000000004ff7188

    Name: System.Security.SecurityException

    MethodTable: 000007fed5f7ec50

    EEClass: 000007fed5c14110

    Size: 240(0xf0) bytes

    (C:WindowsassemblyGAC_64mscorlib2.0.0.0__b77a5c561934e089mscorlib.dll)

    Fields:

                  MT    Field   Offset                 Type VT     Attr            Value Name

    000007fed5f69d58  40000b5        8        System.String  0 instance 0000000000000000 _className

    000007fed5f68100  40000b6       10 ...ection.MethodBase  0 instance 0000000000000000 _exceptionMethod

    000007fed5f69d58  40000b7       18        System.String  0 instance 0000000000000000 _exceptionMethodString

    000007fed5f69d58  40000b8       20        System.String  0 instance 0000000004ff7120 _message

    000007fed5f61378  40000b9       28 ...tions.IDictionary  0 instance 0000000000000000 _data

    000007fed5f6a020  40000ba       30     System.Exception  0 instance 0000000000000000 _innerException

    000007fed5f69d58  40000bb       38        System.String  0 instance 0000000000000000 _helpURL

    000007fed5f69648  40000bc       40        System.Object  0 instance 0000000004ff7410 _stackTrace

    000007fed5f69d58  40000bd       48        System.String  0 instance 0000000000000000 _stackTraceString

    000007fed5f69d58  40000be       50        System.String  0 instance 0000000000000000 _remoteStackTraceString

    000007fed5f70fc8  40000bf       70         System.Int32  1 instance                0 _remoteStackIndex

    000007fed5f69648  40000c0       58        System.Object  0 instance 0000000000000000 _dynamicMethods

    000007fed5f70fc8  40000c1       74         System.Int32  1 instance      2146233078 _HResult

    000007fed5f69d58  40000c2       60        System.String  0 instance 0000000000000000 _source

    000007fed5f6c760  40000c3       68        System.IntPtr  1 instance                0 _xptrs

    000007fed5f70fc8  40000c4       78         System.Int32  1 instance       532459699 _xcode

    000007fed5f69d58  4001f2a       80        System.String  0 instance 0000000000000000 m_debugString

    000007fed5f5de20  4001f2b       7c         System.Int32  1 instance                0 m_action

    000007fed5f6ba30  4001f2c       88          System.Type  0 instance 0000000000000000 m_typeOfPermissionThatFailed

    000007fed5f69d58  4001f2d       90        System.String  0 instance 0000000000000000 m_permissionThatFailed

    000007fed5f69d58  4001f2e       98        System.String  0 instance 0000000000000000 m_demanded

    000007fed5f69d58  4001f2f       a0        System.String  0 instance 0000000000000000 m_granted

    000007fed5f69d58  4001f30       a8        System.String  0 instance 0000000000000000 m_refused

    000007fed5f69d58  4001f31       b0        System.String  0 instance 0000000000000000 m_denied

    000007fed5f69d58  4001f32       b8        System.String  0 instance 0000000000000000 m_permitOnly

    000007fed5f74180  4001f33       c0 ...tion.AssemblyName  0 instance 0000000000000000 m_assemblyName

    000007fed5f71d98  4001f34       c8        System.Byte[]  0 instance 0000000000000000 m_serializedMethodInfo

    000007fed5f69d58  4001f35       d0        System.String  0 instance 0000000000000000 m_strMethodInfo

    000007fed5f9feb8  4001f36       e0         System.Int32  1 instance                0 m_zone

    000007fed5f69d58  4001f37       d8        System.String  0 instance 0000000000000000 m_url

    для нас важным является свойство Message. Давайте выведем значение поля _message, поскольку именно в нем Message хранит текстовую строку. Шестнадцатеричное число в столбце Value является экземпляром объекта:

    0:006> !dumpobj 0000000004ff7120

    Name: System.String

    MethodTable: 000007fed5f69d58

    EEClass: 000007fed5b6e650

    Size: 102(0x66) bytes

    (C:WindowsassemblyGAC_64mscorlib2.0.0.0__b77a5c561934e089mscorlib.dll)

    String: Запрошенный доступ к реестру запрещен.

    Fields:

                  MT    Field   Offset                 Type VT     Attr            Value Name

    000007fed5f70fc8  4000096        8         System.Int32  1 instance               39 m_arrayLength

    000007fed5f70fc8  4000097        c         System.Int32  1 instance               38 m_stringLength

    000007fed5f6b7a0  4000098       10          System.Char  1 instance              417 m_firstChar

    000007fed5f69d58  4000099       20        System.String  0   shared           static Empty

                                     >> Domain:Value  0000000000176120:0000000004a41308 00000000046de6e0:0000000004a41308 <<

    000007fed5f6b650  400009a       28        System.Char[]  0   shared           static WhitespaceChars

                                     >> Domain:Value  0000000000176120:0000000004a41a38 00000000046de6e0:0000000004a7eb78 <<

    ну да, очень похоже на то, что мы видели выше в выводе команды !PrintException. Но это всего-лишь сообщение об ошибке, а как нам добраться до конкретного ключа, попытка доступа к которому у нас закончилась неудачей? Попробуем посмотреть объект с именем Microsoft.Win32.RegistryKey:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    0:006> !dumpobj 0000000004abeca8

    Name: Microsoft.Win32.RegistryKey

    MethodTable: 000007fed5f62ec0

    EEClass: 000007fed5b6ba20

    Size: 56(0x38) bytes

    (C:WindowsassemblyGAC_64mscorlib2.0.0.0__b77a5c561934e089mscorlib.dll)

    Fields:

                  MT    Field   Offset                 Type VT     Attr            Value Name

    000007fed5f69648  400018a        8        System.Object  0 instance 0000000000000000 __identity

    000007fed5f63240  400177a       10 ...afeRegistryHandle  0 instance 0000000004abec88 hkey

    000007fed5f70fc8  400177b       20         System.Int32  1 instance                6 state

    000007fed5f69d58  400177c       18        System.String  0 instance 0000000004a65d38 keyName

    000007fed5f68f28  400177d       28       System.Boolean  1 instance                0 remoteKey

    000007fed5f62630  400177e       24         System.Int32  1 instance                0 checkMode

    000007fed5f6c760  4001772      b80        System.IntPtr  1   shared           static HKEY_CLASSES_ROOT

                                     >> Domain:Value  0000000000176120:ffffffff80000000 00000000046de6e0:ffffffff80000000 <<

    000007fed5f6c760  4001773      b88        System.IntPtr  1   shared           static HKEY_CURRENT_USER

                                     >> Domain:Value  0000000000176120:ffffffff80000001 00000000046de6e0:ffffffff80000001 <<

    000007fed5f6c760  4001774      b90        System.IntPtr  1   shared           static HKEY_LOCAL_MACHINE

                                     >> Domain:Value  0000000000176120:ffffffff80000002 00000000046de6e0:ffffffff80000002 <<

    000007fed5f6c760  4001775      b98        System.IntPtr  1   shared           static HKEY_USERS

                                     >> Domain:Value  0000000000176120:ffffffff80000003 00000000046de6e0:ffffffff80000003 <<

    000007fed5f6c760  4001776      ba0        System.IntPtr  1   shared           static HKEY_PERFORMANCE_DATA

                                     >> Domain:Value  0000000000176120:ffffffff80000004 00000000046de6e0:ffffffff80000004 <<

    000007fed5f6c760  4001777      ba8        System.IntPtr  1   shared           static HKEY_CURRENT_CONFIG

                                     >> Domain:Value  0000000000176120:ffffffff80000005 00000000046de6e0:ffffffff80000005 <<

    000007fed5f6c760  4001778      bb0        System.IntPtr  1   shared           static HKEY_DYN_DATA

                                     >> Domain:Value  0000000000176120:ffffffff80000006 00000000046de6e0:ffffffff80000006 <<

    000007fed5f57b48  4001779      9d8      System.Object[]  0   shared           static hkeyNames

                                     >> Domain:Value  0000000000176120:0000000004a65e68 00000000046de6e0:0000000004abec30 <<

    000007fed5f70fc8  400177f      bb8         System.Int32  1   shared           static _SystemDefaultCharSize

                                     >> Domain:Value  0000000000176120:2 00000000046de6e0:2 <<

    А затем значение поля keyName:

    0:006> !dumpobj 0000000004a65d38

    Name: System.String

    MethodTable: 000007fed5f69d58

    EEClass: 000007fed5b6e650

    Size: 60(0x3c) bytes

    (C:WindowsassemblyGAC_64mscorlib2.0.0.0__b77a5c561934e089mscorlib.dll)

    String: HKEY_CURRENT_USER

    Fields:

                  MT    Field   Offset                 Type VT     Attr            Value Name

    000007fed5f70fc8  4000096        8         System.Int32  1 instance               18 m_arrayLength

    000007fed5f70fc8  4000097        c         System.Int32  1 instance               17 m_stringLength

    000007fed5f6b7a0  4000098       10          System.Char  1 instance               48 m_firstChar

    000007fed5f69d58  4000099       20        System.String  0   shared           static Empty

                                     >> Domain:Value  0000000000176120:0000000004a41308 00000000046de6e0:0000000004a41308 <<

    000007fed5f6b650  400009a       28        System.Char[]  0   shared           static WhitespaceChars

                                     >> Domain:Value  0000000000176120:0000000004a41a38 00000000046de6e0:0000000004a7eb78 <<

    опять же, добрались до куста HKEY_CURRENT_USER, можно конечно попробовать поиграться с разрешениями на целый куст, но это не очень хорошая затея и комфортнее было бы определить полный путь. Как нам это сделать? Вспомним, что выделенная стеку область памяти используется [в том числе] для передачи параметров в методы и хранения
    определенных в пределах методов переменных. Поэтому непосредственно до вызова самого метода (снизу вверх) в стеке должны храниться параметры. Давайте вернемся к списку объектов (виденному нами выше) в стеке, среди прочего у нас есть объекты System.String:

    . . .

    0000000003bf8320 0000000004ff5e58 System.String

    0000000003bf8398 0000000004ff5e58 System.String

    0000000003bf83a8 0000000004ff7120 System.String

    . . .

    Последний в списке (0000000004ff7120) нами уже проверен выше. Два остальных объекта у нас идентичны, поскольку показывают один и тот же адрес, поэтому стоит просмотреть содержимое:

    0:006> !dumpobj 0000000004ff5e58

    Name: System.String

    MethodTable: 000007fed5f69d58

    EEClass: 000007fed5b6e650

    Size: 154(0x9a) bytes

    (C:WindowsassemblyGAC_64mscorlib2.0.0.0__b77a5c561934e089mscorlib.dll)

    String: SoftwareMicrosoftInternet ExplorerMain

    Fields:

                  MT    Field   Offset                 Type VT     Attr            Value Name

    000007fed5f70fc8  4000096        8         System.Int32  1 instance               65 m_arrayLength

    000007fed5f70fc8  4000097        c         System.Int32  1 instance               41 m_stringLength

    000007fed5f6b7a0  4000098       10          System.Char  1 instance               53 m_firstChar

    000007fed5f69d58  4000099       20        System.String  0   shared           static Empty

                                     >> Domain:Value  0000000000176120:0000000004a41308 00000000046de6e0:0000000004a41308 <<

    000007fed5f6b650  400009a       28        System.Char[]  0   shared           static WhitespaceChars

                                     >> Domain:Value  0000000000176120:0000000004a41a38 00000000046de6e0:0000000004a7eb78 <<

    И что же мы тут видим? Объект содержит строку, являющуюся полным путем к искомому разделу реестра. В итоге, мы смогли воспроизвести полный путь раздела, при попытке доступа к которому возникло исключение: это HKCUSoftwareMicrosoftInternet ExplorerMain. Смотрим через regedit.exe на разрешения к данному ключу, и выясняется, что для текущего пользователя кто-то их убрал (очередное криво-установившееся обновление?). Не важно, посмотрим разрешения на аналогичной рабочей операционной системе, они там присутствуют, значит надо выставлять по аналогии.

Метод 2: определение источника при помощи ProcMon

Отладчик является довольно мощным средством для поиска причин ошибок Net Framework. Но встречаются случаи, когда мы (по абсолютно разным причинам) не можем найти нужных структур в файле дампа приложения, либо у нас не хватает уровня знаний для того, чтобы до этих данных дотянуться. В подобной ситуации хорошо бы иметь под рукой еще несколько методов анализа боя. И в этом разделе мы рассмотрим другой метод поиска причин ошибок Net Framework, который предполагает работу уже с объектами файловой системы, сбор возникающих во время работы сбойного приложения событий при помощи средства под названием Procmon.
Общий алгоритм решения:

  • Скачиваем утилиту Procmon. Более подробно о данной программе можно почитать в этой статье.
  • Запускаем Procmon из-под учетной записи с правами локального Администратора (с повышением привилегий). Стартует процесс сбора системных событий.
  • В параллель запускаем вызывающее ошибку приложение. Дожидаемся возникновения ошибки.
  • Переключаемся в окно Process Monitor, нажатием на значок лупы прекращаем запись событий (дабы не раздувать список событий и не увеличивать понапрасну нагрузку на систему).
  • В получившемся списке собранных событий ставим курсор (маркируем) на самое первое событие, открываем окно поиска комбинацией клавиш Ctrl+F и сперва ищем словосочетание access denied.
  • Каждое найденное таким образом событие сверяем по столбцу Process Name, дабы имя соответствовало нашей проблемной (падающей, сбойной) программе (для случая выше это eventvwr.exe). Выглядеть это будет подобным образом:

    procmon access denied

    Как мы видим, проблема заключается в отсутствии доступа к разделу реестра HKCUSoftwareMicrosoftInternet ExplorerMain

  • Запускаем Regedit.exe. Разворачиваем путь до проблемного раздела реестра, в меню открываем Разрешения объекта. Для начала меняем владельца объекта на собственную учетную запись, затем переоткрываем разрешения и устанавливаем необходимые разрешения безопасности для нашей учетной записи (из-под которой планируется запускать наше сбойное приложение).

Метод 3: дизассемблер IL (IL DASM)

Все исполняемые файлы, содержащие в себе управляемый и неуправляемый код, размещаются в файловой системе в виде типовых исполняемых .exe-файлов в формате PE. Дизассемблер, входящий в состав пакета Windows SDK, предназначен для декомпиляции (рефлексии) исполняемых файлов, содержащих в своем составе код на языке IL.

  • Скачиваем и устанавливаем Архив Windows SDK под нужную нам систему;
  • Запускаем ildasm.exe. Обычно располагается по пути: C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.7.2 Tools» — *соответственно не забудьте сделать корректировку версий в составе пути, у вас они могут отличаться.
  • Открываем файл, фигурирующий у нас в параметре Сигнатура 04 подробностей исключения.
  • Открываем окно с метаданными указанной сборки: пункт меню ВидМетаданныеПоказать!.
  • В открывшемся окне метаданных (MetaInfo) выполняем поиск по определению метода, которое содержится в параметре исключения Сигнатура 07 деталей сбоя, при этом добавляя префикс 0x06 (таблица определений методов). В итоге, для примера выше, получается значение 06002d59.
  • В найденной записи таблиц метаданных смотрим соответствующее имя метода в поле MethodName: <имя_метода> (06002d59).

Таким образом мы узнаем метод, в котором возникло (необработанное) исключение, и имея под рукой его исходный код, уже гораздо проще найти место возникновения ошибки. Преимущество дизассемблера IL Dasm состоит в том, что он самостоятельно анализирует таблицы метаданных и группирует всю необходимую информацию в удобочитаемом виде, поэтому специалисту не приходится заниматься самостоятельным синтаксическим разбором «сырых» табличных данных.

Понравилась статья? Поделить с друзьями:
  • Как устранить ошибки приложений на телефоне
  • Как устранить ошибки при скачивании google chrome
  • Как устранить ошибки на авто
  • Как устранить ошибки при установке обновлений windows
  • Как устранить ошибки при обновлении виндовс