Udostępnij za pośrednictwem


Stosowanie poprawek programu .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 błędy stosowania poprawek programu Microsoft .NET Framework były używane lub blokowane po zastosowaniu poprawki.

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

Objawy

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

Niepowodzenie poprawki dziennika pełnej tożsamości usługi zarządzanej może zawierać coś podobnego do następującego:

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

lub

02/22/10 08:38:32 DDSet_Status: Spanie 100 ms...
02/22/10 08:38:32 DDSet_Error: Nie można zainstalować zestawu
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. Funkcja IAssemblyCache-InstallAssembly>() zwróciła wartość -2147024864.
02/22/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.

Rezolucja

Ten problem można uniknąć, upewniając się, że procesy nie działają, które mogą zablokować zestawy.

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

  1. Pobierz procexp.exe , aby odnaleźć proces blokowania zestawów.

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

  3. W polu tekstowym Handle or DLL substring (Obsługa lub podciąg biblioteki DLL) wpisz Assembly (Zestaw ), a następnie wybierz pozycję Search (Wyszukaj).

    Zrzut ekranu przedstawia 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ę Kill Process (Zabij proces ), aby zakończyć proces.

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