Stosowanie poprawek .NET Framework kończy się niepowodzeniem z powodu błędu: Odmowa dostępu lub Plik w użyciu

Ten artykuł pomaga rozwiązać problem polegający na tym, że firma Microsoft .NET Framework błędy poprawek, gdy zestawy są używane lub zablokowane po zastosowaniu poprawki.

Oryginalna wersja produktu: .NET Framework
Oryginalny numer KB: 2263996

Symptomy

Jeśli plik zestawu w globalnej pamięci podręcznej dostępu (GAC) został zablokowany lub jest używany, może to spowodować niepowodzenie .NET Framework poprawek. Ten problem może zostać zaostrzony przez usterkę w sposobie, w jaki połączenie obsługuje wycofywanie i może spowodować usunięcie plików. Spowoduje to niepowodzenie aplikacji zarządzanych (tych aplikacji, które zależą od zestawów platformy).

Nieprawidłowa poprawka dziennika msi verbose może zawierać coś takiego:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll" z powodu błędu systemu:Odmowa dostępu.
22.06.10 11:57:26 DDSet_Status: Spanie 100ms...
MSI (s) (54!70) [11:57:26:738]: Produkt: Microsoft .NET Framework 2.0 z dodatkiem Service Pack 2 — wystąpił problem z tym pakietem Instalatora Windows.
Aby uzyskać więcej informacji, zapoznaj się z dziennikiem konfiguracji.
Wystąpił problem z tym pakietem Instalatora Windows.
Aby uzyskać więcej informacji, zapoznaj się z dziennikiem konfiguracji.
22.06.10 11:57:26 DDSet_CARetVal: 0
06/22/10 11:57:26 DDSet_Exit: InstallAssembly zakończone z zwracana wartość 1603
MSI (s) (54:94) [11:57:26:758]: Wartość zasad użytkownika "DisableRollback" to 0
MSI (s) (54:94) [11:57:26:758]: Wartość zasad maszyny "DisableRollback" to 0
Akcja zakończyła się 11:57:26: InstallExecute. Zwraca wartość 3.

Lub

22.02.10 08:38:32 DDSet_Status: Spanie 100ms...
22.02.10 08:38:32 DDSet_Error: Nie można zainstalować zestawu
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache-InstallAssembly>() zwróciło wartość -2147024864.
22.02.10 08:38:32 DDSet_Error: Nie można zainstalować zestawu
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll" z powodu błędu systemu:
Proces nie może uzyskać dostępu do pliku, ponieważ jest on używany przez inny proces.

Przyczyna

Jeśli zestawy są używane lub zablokowane po zastosowaniu poprawki, poprawka zakończy się niepowodzeniem.

Rozwiązanie

Tego problemu można uniknąć, upewniając się, że procesy nie są uruchomione, co może zablokować zestawy.

Aby wykryć, czy zestawy są używane, wykonaj następujące kroki:

  1. Pobierz procexp.exe , aby odnaleźć proces blokujący zestawy.

  2. Uruchom procexp.exe, a następnie naciśnij klawisze Ctrl+F, aby otworzyć okno wyszukiwania Eksploratora procesów .

  3. W polu tekstowym Dojście lub podciąg biblioteki DLL wpisz assembly , a następnie wybierz pozycję Wyszukaj.

    Zrzut ekranu przedstawiający kroki wyszukiwania zestawu.

  4. Wszystkie wymienione pliki mogą mieć wpływ na instalację poprawki. Zakończ wszystkie wymienione procesy lub zamknij skojarzone aplikacje. Aby to zrobić, wykonaj następujące kroki.

    1. Wybierz nazwę procesu, którą chcesz zakończyć w oknie wyszukiwania Eksploratora procesów , aby zlokalizować proces.

    2. Kliknij prawym przyciskiem myszy nazwę procesu w okienku Proces .

    3. Wybierz pozycję Zabij proces , aby zakończyć proces.

      Zrzut ekranu przedstawia kroki umożliwiające zabicie procesu.