Das Patchen von .NET Framework schlägt mit einem Fehler fehl: Der Zugriff wird 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

Problembeschreibung

Wenn eine Assemblydatei im globalen Zugriffscache (Global Access Cache, 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 behoben werden, wie Fusion den Rollback behandelt und dazu führen kann, dass Dateien gelöscht werden. Dies führt dazu, dass verwaltete Anwendungen (anwendungen, die von Frameworkassemblys abhängig sind) fehlschlagen.

Das msi-Ausführliche Protokoll für fehlerhafte Patches kann etwa folgendermaßen aussehen:

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.dll" aufgrund eines Systemfehlers: Access wird verweigert.
06/22/10 11:57:26 DDSet_Status: Sleeping 100ms...
MSI (s) (54!70) [11:57:26:738]: Produkt: Microsoft .NET Framework 2.0 Service Pack 2 – Es gibt ein Problem mit diesem Windows Installer-Paket.
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 endete mit Rückgabewert 1603
MSI (s) (54:94) [11:57:26:758]: Der 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: Sleeping 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() zurückgegeben -2147024864.
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 werden, 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 eine Sperre für die Assemblys darstellen können.

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

  1. Laden Sie procexp.exe herunter, um den Prozess zu ermitteln, bei dem es sich um Sperrassemblys handelt.

  2. Starten Sie procexp.exe, und drücken Sie dann STRG+F, um das Suchfenster des Prozess-Explorers zu öffnen.

  3. Geben Sie im Textfeld "Handle" oder "DLL-Teilzeichenfolge" die Zeichenfolge "Assembly" ein, und wählen Sie dann "Suchen" aus.

    Screenshot zeigt die Schritte zum Durchsuchen der Assembly.

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

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

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

    3. Wählen Sie "Prozess beenden" aus, um den Prozess zu beenden.

      Screenshot zeigt Schritte zum Beenden eines Prozesses.