Das Patchen von .NET Framework schlägt mit einem Fehler fehl: Der Zugriff wurde verweigert oder Die Datei wird verwendet.

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem microsoft .NET Framework Patchfehler auftreten, wenn Assemblys verwendet oder gesperrt werden, wenn ein Patch angewendet wird.

Ursprüngliche Produktversion: .NET Framework
Ursprüngliche KB-Nummer: 2263996

Symptome

Wenn eine Assemblydatei im globalen Zugriffscache (GAC) gesperrt wurde oder verwendet wird, kann dies dazu führen, dass .NET Framework Patches fehlschlagen. Dieses Problem kann durch einen Fehler in der Art und Weise, wie Fusion den Rollback behandelt, verschärft werden, und kann dazu führen, dass Dateien gelöscht werden. Dies führt dazu, dass verwaltete Anwendungen (anwendungen, die von Frameworkassemblys abhängig sind) fehlschlagen.

Das ausführliche Msi-Protokoll des fehlerhaften Patchs enthält möglicherweise folgendes:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll" aufgrund eines Systemfehlers: Der Zugriff wird verweigert.
06/22/10 11:57:26 DDSet_Status: Schlafen 100ms...
MSI (s) (54!70) [11:57:26:738]: Produkt: Microsoft .NET Framework 2.0 Service Pack 2 - Es liegt ein Problem mit diesem Windows Installer-Paket vor.
Weitere Informationen finden Sie im Setupprotokoll.
Es liegt ein Problem mit diesem Windows Installer-Paket vor.
Weitere Informationen finden Sie im Setupprotokoll.
22.06.10 11:57:26 DDSet_CARetVal: 0
22.06.10 11:57:26 DDSet_Exit: InstallAssembly wurde mit dem Rückgabewert 1603 beendet
MSI (s) (54:94) [11:57:26:758]: Benutzerrichtlinienwert "DisableRollback" ist 0
MSI (s) (54:94) [11:57:26:758]: Computerrichtlinienwert "DisableRollback" ist 0
Aktion endete 11:57:26: InstallExecute. Rückgabewert 3.

Oder

02/22/10 08:38:32 DDSet_Status: Schlafen 100ms...
22.02.10 08:38:32 DDSet_Error: Assembly konnte nicht installiert werden
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll. IAssemblyCache-InstallAssembly>() hat -2147024864 zurückgegeben.
22.02.10 08:38:32 DDSet_Error: Assembly konnte nicht installiert werden
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll" aufgrund eines Systemfehlers:
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.

Ursache

Wenn Assemblys verwendet oder gesperrt sind, wenn ein Patch angewendet wird, schlägt der Patch fehl.

Lösung

Dieses Problem kann vermieden werden, indem sichergestellt wird, dass keine Prozesse ausgeführt werden, die die Assemblys sperren können.

Führen Sie die folgenden Schritte aus, um zu ermitteln, ob Assemblys verwendet werden:

  1. Laden Sie procexp.exe herunter, um prozesse zu ermitteln, die Assemblys sperren.

  2. Starten Sie procexp.exe, und drücken Sie dann STRG+F, um das Fenster Prozess Explorer Suche zu öffnen.

  3. Geben Sie im Textfeld Handle oder DLL-Teilzeichenfolgeden Text Assembly ein, und wählen Sie dann Suchen aus.

    Screenshot: Schritte zum Durchsuchen der Assembly

  4. Alle aufgeführten Dateien können auswirkungen auf die Installation des Patches haben. Beenden Sie alle aufgeführten Prozesse, oder schließen Sie die zugehörigen Anwendungen. Gehen Sie dazu wie folgt vor:

    1. Wählen Sie im Fenster Prozess Explorer suche den Prozessnamen aus, den Sie beenden möchten, um den Prozess zu suchen.

    2. Klicken Sie im Bereich Prozess mit der rechten Maustaste auf den Prozessnamen.

    3. Wählen Sie Kill Process (Prozess beenden) aus, um den Prozess zu beenden.

      Screenshot: Schritte zum Beenden eines Prozesses