- .NET Framework initialization errors: Managing the user experience
- CLR activation HRESULT codes
- UI for initialization errors
- Resolving the initialization error
- Controlling the error message
- UI policy for CLR-provided hosts
- Windows 8 behavior and UI
- Ошибка инициализации платформы .NET Framework 4 — как исправить
- Удаление и последующая установка компонентов .NET Framework 4 последней версии
- Использование официальных утилит исправления ошибок .NET Framework
- Дополнительная информация
- Что делать при ошибке .NET Framework: «Initialization error»
- Почему возникает ошибка Microsoft .NET Framework: «Initialization error»?
- Microsoft .NET Framework не установлен
- Установлена не правильная версия компонента
- Повреждение компонента Microsoft .NET Framework
.NET Framework initialization errors: Managing the user experience
The common language runtime (CLR) activation system determines the version of the CLR that will be used to run managed application code. In some cases, the activation system might not be able to find a version of the CLR to load. This situation typically occurs when an application requires a CLR version that is invalid or not installed on a given computer. If the requested version is not found, the CLR activation system returns an HRESULT error code from the function or interface that was called, and may display an error message to the user who is running the application. This article provides a list of HRESULT codes and explains how you can prevent the error message from being displayed.
The CLR provides logging infrastructure to help you debug CLR activation issues, as described in How to: Debug CLR Activation Issues. This infrastructure should not be confused with assembly binding logs, which are entirely different.
CLR activation HRESULT codes
The CLR activation APIs return HRESULT codes to report the result of an activation operation to a host. CLR hosts should always consult these return values before proceeding with additional operations.
UI for initialization errors
If the CLR activation system cannot load the correct version of the runtime that is required by an application, it displays an error message to users to inform them that their computer is not properly configured to run the application, and provides them with an opportunity to remedy the situation. The following error message is typically presented in this situation. The user can choose Yes to go to a Microsoft website where they can download the correct .NET Framework version for the application.
Resolving the initialization error
As a developer, you have a variety of options for controlling the .NET Framework initialization error message. For example, you can use an API flag to prevent the message from being displayed, as discussed in the next section. However, you still have to resolve the issue that prevented your application from loading the requested runtime. Otherwise, your application may not run at all, or some functionality may not be available.
To resolve the underlying issues and provide the best user experience (fewer error messages), we recommend the following:
For .NET Framework 3.5 (and earlier) applications: Configure your application to support the .NET Framework 4 or later versions (see instructions).
For .NET Framework 4 applications: Install the .NET Framework 4 redistributable package as part of your application setup. See Deployment Guide for Developers.
Controlling the error message
Displaying an error message to communicate that a requested .NET Framework version was not found can be viewed as either a helpful service or a minor annoyance to users. In either case, you can control this UI by passing flags to the activation APIs.
The ICLRMetaHostPolicy::GetRequestedRuntime method accepts a METAHOST_POLICY_FLAGS enumeration member as input. You can include the METAHOST_POLICY_SHOW_ERROR_DIALOG flag to request an error message if the requested version of the CLR is not found. By default, the error message is not displayed. (The ICLRMetaHost::GetRuntime method does not accept this flag, and does not provide any other way to display the error message.)
Windows provides a SetErrorMode function that you can use to declare whether you want error messages to be shown as a result of code that runs within your process. You can specify the SEM_FAILCRITICALERRORS flag to prevent the error message from being displayed.
However, in some scenarios, it is important to override the SEM_FAILCRITICALERRORS setting set by an application process. For example, if you have a native COM component that hosts the CLR and that is hosted in a process where SEM_FAILCRITICALERRORS is set, you may want to override the flag, depending on the impact of displaying error messages within that particular application process. In this case, you can use one of the following flags to override SEM_FAILCRITICALERRORS:
Use METAHOST_POLICY_IGNORE_ERROR_MODE with the ICLRMetaHostPolicy::GetRequestedRuntime method.
Use RUNTIME_INFO_IGNORE_ERROR_MODE with the GetRequestedRuntimeInfo function.
UI policy for CLR-provided hosts
The CLR includes a set of hosts for a variety of scenarios, and these hosts all display an error message when they encounter problems loading the required version of the runtime. The following table provides a list of hosts and their error message policies.
CLR host | Description | Error message policy | Can error message be disabled? |
---|---|---|---|
Managed EXE host | Launches managed EXEs. | Is shown in case of a missing .NET Framework version | No |
Managed COM host | Loads managed COM components into a process. | Is shown in case of a missing .NET Framework version | Yes, by setting the SEM_FAILCRITICALERRORS flag |
ClickOnce host | Launches ClickOnce applications. | Is shown in case of a missing .NET Framework version, starting with the .NET Framework 4.5 | No |
XBAP host | Launches WPF XBAP applications. | Is shown in case of a missing .NET Framework version, starting with the .NET Framework 4.5 | No |
Windows 8 behavior and UI
The CLR activation system provides the same behavior and UI on Windows 8 as it does on other versions of the Windows operating system, except when it encounters issues loading CLR 2.0. Windows 8 includes the .NET Framework 4.5, which uses CLR 4.5. However, Windows 8 does not include the .NET Framework 2.0, 3.0, or 3.5, which all use CLR 2.0. As a result, applications that depend on CLR 2.0 do not run on Windows 8 by default. Instead, they display the following dialog box to enable users to install the .NET Framework 3.5. Users can also enable the .NET Framework 3.5 in Control Panel. Both options are discussed in the article Install the .NET Framework 3.5 on Windows 10, Windows 8.1, and Windows 8.
The .NET Framework 4.5 replaces the .NET Framework 4 (CLR 4) on the user’s computer. Therefore, .NET Framework 4 applications run seamlessly, without displaying this dialog box, on Windows 8.
When the .NET Framework 3.5 is installed, users can run applications that depend on the .NET Framework 2.0, 3.0, or 3.5 on their Windows 8 computers. They can also run .NET Framework 1.0 and 1.1 applications, provided that those applications are not explicitly configured to run only on the .NET Framework 1.0 or 1.1. See Migrating from the .NET Framework 1.1.
Starting with the .NET Framework 4.5, CLR activation logging has been improved to include log entries that record when and why the initialization error message is displayed. For more information, see How to: Debug CLR Activation Issues.
Ошибка инициализации платформы .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 последней версии
Первый вариант, который следует попробовать, если на настоящий момент он еще не был опробован — удалить имеющиеся компоненты .NET Framework 4 и установить их заново.
Если у вас Windows 10, порядок действий будет таким
- Зайдите в Панель управления (в поле «Просмотр» установите «Значки») — Программы и компоненты — нажмите слева «Включение и отключение компонентов Windows».
- Снимите отметку с .NET Framework 4.7 (или 4.6 в более ранних версиях Windows 10).
- Нажмите «Ок».
После удаления, перезагрузите компьютер, снова зайдите в раздел «Включение и отключение компонентов Windows», включите .NET Framework 4.7 или 4.6, подтвердите установку и опять же, перезагрузите систему.
Если у вас Windows 7 или 8:
- Зайдите в панель управления — программы и компоненты и удалите там .NET Framework 4 (4.5, 4.6, 4.7, в зависимости от того, какая версия установлена).
- Перезагрузите компьютер.
- Скачайте с официального сайта Майкрософт .NET Framework 4.7 и установите на компьютер. Адрес страницы для загрузки — https://www.microsoft.com/ru-ru/download/details.aspx?id=55167
После установки и перезагрузки компьютера, проверьте, была ли устранена проблема и появляется ли ошибка инициализации платформы .NET Framework 4 снова.
Использование официальных утилит исправления ошибок .NET Framework
У Майкрософт имеется несколько собственных утилит для исправления ошибок .NET Framework:
- .NET Framework Repair Tool
- .NET Framework Setup Verification Tool
- .NET Framework Cleanup Tool
Наиболее полезной в большинстве случаев может оказаться первая из них. Порядок ее использования выглядит следующим образом:
- Скачайте утилиту со страницы https://www.microsoft.com/en-us/download/details.aspx?id=30135
- Откройте загруженный файл NetFxRepairTool
- Примите лицензию, нажмите кнопку «Next» и дождитесь, когда будут проверены установленные компоненты .NET Framework.
- Будет отображен список возможных проблем с .NET Framework разных версий, а по нажатию на Next будет запущено автоматическое исправление, если оно возможно.
По завершении работы утилиты рекомендую перезагрузить компьютер и проверить, была ли исправлена проблема.
Утилита .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 можно с официальной страницы 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 с компьютера с тем, чтобы затем выполнить установку заново.
Следует учитывать, что утилита не удаляет компоненты, которые являются составной частью Windows. Например, удалить .NET Framework 4.7 в Windows 10 Creators Update с ее помощью не получится, зато с большой вероятностью проблемы инициализации .NET Framework получится исправить в Windows 7 путем удаления версий .NET Framework 4.x в Cleanup Tool и последующей установки версии 4.7 с официального сайта.
Дополнительная информация
В некоторых случаях исправить ошибку может помочь простая переустановка программы, ее вызывающей. Либо, в случаях, если ошибка появляется при входе в Windows (т.е. при запуске какой-то программы в автозагрузке), может иметь смысл убрать эту программу из автозагрузки, если она не является необходимой (см. Автозагрузка программ в Windows 10).
А вдруг и это будет интересно:
Почему бы не подписаться?
Рассылка новых, иногда интересных и полезных, материалов сайта remontka.pro. Никакой рекламы и бесплатная компьютерная помощь подписчикам от автора. Другие способы подписки (ВК, Одноклассники, Телеграм, Facebook, Twitter, Youtube, Яндекс.Дзен)
06.09.2017 в 10:54
Какой смысл подписываться и тем более оставлять комментарии, если никто не отвечает на этом сайте, сюда п мать, что в пустоту, что головой об стену убиться!
07.09.2017 в 08:29
Ну вообще-то я на сотню комментариев в день где-то отвечаю на этом сайте.
Не знаю, где именно вам не ответил. Бывает, что не отвечаю, но только когда либо вопроса как такового нет, либо когда у меня ответа никакого нет (но тогда коммент остается, может кто-то еще ответит).
Сейчас пересмотрел ваши комментарии на сайте — не ответил, я так понимаю, только на один, связанный с wmic.
09.03.2018 в 15:58
спасибо все сделал как написано, удалил, загрузил, вставил, проверил, заработало, еще раз благодарю
26.03.2018 в 00:04
здрасте. из описания в самом начале я так понял, что нет фрэймворк 4.7 заменяет все 4, а то у меня были 4.5 фул и 4.5 забыл слово, а после обновления виндоус стали 4.7 то есть это хорошо? или 4.5 тоже надо бы? а.
Что делать при ошибке .NET Framework: «Initialization error»
Ошибка Microsoft .NET Framework: «Initialization error» связана с невозможностью использовать компонент. Причин этому может быть несколько. Возникает она на этапе запуска игр или программ. Иногда пользователи наблюдают ее при старте Виндовс. Эта ошибка никаким образом не связана с оборудованием или другими программами. Возникает непосредственно в самом компоненте. Давайте рассмотрим подробнее причины ее появления.
Почему возникает ошибка Microsoft .NET Framework: «Initialization error»?
Если вы увидели такое сообщение, например, при старте Windows, это говорит о том, что некоторая программа стоит в автозагрузке и обращается к компоненту Microsoft .NET Framework, а тот в свою очередь выдает ошибку. Тоже самое при запуске определенной игры или программы. Существует несколько причин и вариантов решения проблемы.
Microsoft .NET Framework не установлен
Это особо актуально после переустановки операционной системы. Компонент Microsoft .NET Framework нужен не для всех программ. Поэтому, пользователи зачастую не обращают внимания на его отсутствие. Когда устанавливается новое приложение с поддержкой компонента, возникает следующая ошибка: «Initialization error».
Посмотреть наличие установленного компонента .NET Framework можно в «Панель Управления-Установка и удаление программ».
Если ПО действительно отсутствует, просто переходим на официальный сайт и качаем .NET Framework оттуда. Затем устанавливаем компонент как обычную программу. Перегружаем компьютер. Проблема должна исчезнуть.
Установлена не правильная версия компонента
Заглянув в список установленных программ на компьютере, вы обнаружили, что .NET Framework там присутствует, а проблема по прежнему возникает. Скорее всего компонент необходимо обновить до последней версии. Сделать это можно вручную, скачав нужную версию с сайта Microsoft или же с помощью специальных программ.
Маленькая утилита ASoft .NET Version Detector позволяет быстро загрузить необходимую версию компонента Microsoft .NET Framework. Нажимаем на зеленую стрелку напротив интересующей версии и скачиваем ее.
Также, с помощью этой программы, можно посмотреть все версии .NET Framework установленные на компьютере.
После обновления, компьютер должен быть перегружен.
Повреждение компонента Microsoft .NET Framework
Последняя причина появления ошибки «Initialization error», может быть связана с повреждением файлов компонента. Это может быть последствием вирусов, неправильной установкой и удалением компонента, очисткой системы различными программами и т.п. В любом случае, Microsoft .NET Framework из компьютера нужно удалить и поставить заново.
Чтобы правильно деинсталлировать Microsoft .NET Framework, используем дополнительные программы, например утилиту .NET Framework Cleanup Tool.
Затем, с сайта Microsoft качаем нужную версию и устанавливаем компонент. После, еще раз перезапускаем систему.
После проведенных манипуляций ошибка Microsoft .NET Framework: «Initialization error» должна исчезнуть.