Patchen van .NET Framework mislukt met een fout: Toegang wordt geweigerd of Bestand in gebruik

Dit artikel helpt u bij het oplossen van het probleem waarbij de Microsoft-.NET Framework patchfouten wanneer assembly's worden gebruikt of vergrendeld wanneer een patch wordt toegepast.

Oorspronkelijke productversie: .NET Framework
Origineel KB-nummer: 2263996

Symptomen

Als een assemblybestand in de Global Access Cache (GAC) is vergrendeld of in gebruik is, kan dit ertoe leiden dat .NET Framework patches mislukken. Dit probleem kan worden verergerd door een fout in de manier waarop fusion het terugdraaien verwerkt en ertoe kan leiden dat bestanden worden verwijderd. Dit leidt ertoe dat beheerde toepassingen (die toepassingen die afhankelijk zijn van frameworkassembly's) mislukken.

Het uitgebreide MSI-logboek van de mislukte patch bevat mogelijk iets als dit:

'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll' vanwege systeemfout:Toegang wordt geweigerd.
22-06-10 11:57:26 DDSet_Status: Slaapt 100ms...
MSI (s) (54!70) [11:57:26:738]: Product: Microsoft .NET Framework 2.0 Service Pack 2 -- Er is een probleem met dit Windows Installer-pakket.
Raadpleeg het installatielogboek voor meer informatie.
Er is een probleem met dit Windows Installer-pakket.
Raadpleeg het installatielogboek voor meer informatie.
22-06-10 11:57:26 DDSet_CARetVal: 0
22-06-10 11:57:26 DDSet_Exit: InstallAssembly is beëindigd met retourwaarde 1603
MSI (s) (54:94) [11:57:26:758]: Gebruikersbeleidswaarde 'DisableRollback' is 0
MSI (s) (54:94) [11:57:26:758]: Machinebeleidswaarde 'DisableRollback' is 0
De actie is beëindigd om 11:57:26: InstallExecute. Retourwaarde 3.

Of

22-02-10 08:38:32 DDSet_Status: Slaapt 100ms...
22-02-10 08:38:32 DDSet_Error: Kan de assembly niet installeren
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache-InstallAssembly>() heeft -2147024864 geretourneerd.
22-02-10 08:38:32 DDSet_Error: Kan de assembly niet installeren
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll' vanwege een systeemfout:
Het proces heeft geen toegang tot het bestand omdat het wordt gebruikt door een ander proces.

Oorzaak

Als assembly's in gebruik zijn of vergrendeld zijn wanneer een patch wordt toegepast, mislukt de patch.

Oplossing

Dit probleem kan worden vermeden door ervoor te zorgen dat er geen processen worden uitgevoerd die de assembly's kunnen vergrendelen.

Volg deze stappen om te detecteren of assembly's worden gebruikt:

  1. Download procexp.exe om het proces te detecteren dat assembly's vergrendelt.

  2. Start procexp.exe en druk op Ctrl+F om het zoekvenster van Procesverkenner te openen .

  3. Typ Assembly in het tekstvak Handle of DLL-subtekenreeks en selecteer vervolgens Zoeken.

    Schermopname met stappen voor het zoeken naar assembly.

  4. Alle vermelde bestanden kunnen van invloed zijn op de installatie van de patch. Beëindig alle vermelde processen of sluit de gekoppelde toepassingen. Ga hiervoor als volgt te werk:

    1. Selecteer de procesnaam die u wilt beëindigen in het zoekvenster van Process Explorer om het proces te vinden.

    2. Klik met de rechtermuisknop op de procesnaam in het deelvenster Proces .

    3. Selecteer Proces beëindigen om het proces te beëindigen.

      Schermopname van stappen voor het beëindigen van een proces.