Исправление платформа .NET Framework завершается ошибкой: "Доступ запрещен" или "Файл в использовании"

Эта статья поможет устранить проблему, из-за которой microsoft платформа .NET Framework ошибки исправления при использовании сборок или блокировке при применении исправления.

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

Симптомы

Если файл сборки в глобальном кэше доступа (GAC) заблокирован или используется, это может привести к сбою платформа .NET Framework исправлений. Эта проблема может усугубиться ошибкой в том, как fusion обрабатывает откат, и может привести к удалению файлов. Это приведет к сбою управляемых приложений (тех приложений, которые зависят от сборок платформы).

Подробный журнал MSI при сбое исправления может содержать примерно следующее:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll" из-за системной ошибки:Доступ запрещен.
22.06.10 11:57:26 DDSet_Status: Спящий 100 мс...
MSI (s) (54!70) [11:57:26:738]: Продукт: Microsoft платформа .NET Framework 2.0 с пакетом обновления 2 (SP2) — проблема с этим пакетом установщика Windows.
Дополнительные сведения см. в журнале установки.
Существует проблема с этим пакетом установщика Windows.
Дополнительные сведения см. в журнале установки.
22.06.10 11:57:26 DDSet_CARetVal: 0
22.06.10 11:57:26 DDSet_Exit: InstallAssembly закончился с возвращаемым значением 1603
MSI (s) (54:94) [11:57:26:758]: значение политики пользователя "DisableRollback" равно 0
MSI (s) (54:94) [11:57:26:758]: значение политики компьютера "DisableRollback" равно 0
Действие закончилось 11:57:26: InstallExecute. Возвращаемое значение 3.

Или

22.02.10 08:38:32 DDSet_Status: Спящий 100 мс...
22.02.10 08:38:32 DDSet_Error: Не удалось установить сборку
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache-InstallAssembly>() вернул -2147024864.
22.02.10 08:38:32 DDSet_Error: Не удалось установить сборку
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll" из-за системной ошибки:
Процесс не может получить доступ к файлу, так как он используется другим процессом.

Причина

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

Разрешение

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

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

  1. Скачайте procexp.exe , чтобы обнаружить процесс блокировки сборок.

  2. Запустите procexp.exe и нажмите клавиши CTRL+F, чтобы открыть окно Поиск Обозреватель процесса.

  3. В текстовом поле Дескриптор или подстрока DLL введите Сборка , а затем выберите Поиск.

    Снимок экрана: шаги для поиска сборки.

  4. Все перечисленные файлы могут повлиять на установку исправления. Завершите все перечисленные процессы или закройте связанные приложения. Для этого выполните следующие действия:

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

    2. Щелкните правой кнопкой мыши имя процесса в области Процесс .

    3. Нажмите кнопку Завершить процесс , чтобы завершить процесс.

      Снимок экрана: шаги для завершения процесса.