Assembly konnte nicht gefunden werden – 0x80073701

Bei einem frisch installierten Windows Server 2016 bekam ich letzte Woche die Fehlermeldung „Assembly konnte nicht gefunden werden (0x80073701)“ als ich versuchte die Rolle „Fileserver Resource Monitor“, bzw. „Ressourcen-Monitor für Dateiserver“ zu installieren. Windows Update spuckte die gleiche Fehlernummer aus: 0x80073701 – STATUS-SXS-ASSEMBLY-MISSING.



Das referenzierte Assembly konnte nicht gefunden werden

Die Fehlermeldung erhielt ich bei jedem Versuch eine Rolle unter Windows Server 2016 zu installieren. Egal ob über die PowerShell oder die Oberfläche des Server Managers. Ich habe auch versucht, testweise die DNS-Rolle zu installieren (siehe DNS Server einrichten), bekam aber die gleiche Meldung. Es lag also auch nicht an der ausgewählten Rolle.

0x80073701 Assembly konnte nicht gefunden werden
Unschöne Fehlermeldung beim Installieren von Rollen und Features – 0x80073701 – Assembly konnte nicht gefunden werden
Die referenzierte Assembly konnte nicht gefunden werden 0x80073701

Auf meiner langen Suche nach der Ursache, bzw. einer Lösung habe ich folgende Lösungsansätze durchgeführt:

1) Systemdatei-Überprüfungsprogramm

Die Überprüfung der Systemdateien geschieht über die Eingabeaufforderung. Diese muss mit administrativen Rechten („als Administrator starten“) ausgeführt werden. Durch Absetzen des Befehls „sfc /scannow“ beginnt die Anwendung sämtliche Systemdateien auf Fehler zu überprüfen. Sollten Fehler erkannt werden, versucht die Systemdatei-Überprüfung diese sofort zu reparieren. Bei vorliegenden Fehlern empfiehlt es sich, die Überprüfung solange erneut zu starten, bis keine Fehler mehr entdeckt werden.

2) Reparieren des Windows Images

Im Ordner C:\Windows\WinSxs werden alle Komponenten gespeichert, die zum Anpassen und Aktualisieren der Windows-Installation benötigt werden. Auch für die Installation von Rollen und Features und Windows Update werden Dateien aus diesem Ordner benötigt. Dieses lokale Windows Image kann mit Windows Boardmitteln auf Fehler überprüft und, sofern erforderlich, repariert werden. Die Befehle hierfür lauten:

  • dism /online /cleanup-image /scanhealth
    Überprüft das Windows Image auf Beschädigungen
  • dism /online /cleanup-image /checkhealth
    Überprüft, ob das Windows-Image repariert werden muss oder ob es fehlerfrei ist

Sollte das Windows Image beschädigt sein, so lässt sich dieses über den Befehl „Dism /Online /Cleanup-Image /RestoreHealth“ reparieren. Mit dem Parameter /Source lässt sich zudem noch eine Quelle für die Reparatur angeben. Weitere Informationen zu dem Thema Reparieren von Windows Images findest Du hier: https://msdn.microsoft.com/de-de/library/hh824869.aspx.

3) Überprüfung der Datei CBS.log

In der Datei CBS.log werden sämtliche Schritte bei der Installation von Rollen und Features protokolliert. Sie liegt im Ordner C:\Windows\Logs\CBS und liefert genauere Informationen zu möglichen Fehlerquellen. In meinem Fall konnte ich über diese Datei den Fehler lokalisieren. Dort fanden sich nämlich Verweise auf Komponenten mit italienischem Sprachpaket. Da dieses Sprachpaket auf diesem Server nicht installiert war, ging ich der Sache auf den Grund und fand schließlich einen Registryschlüssel welcher auf zahlreiche italienische Sprachpakete verwies.

Error 0x80073701
In der CBS.log wurden versuchte Zugriffe auf nicht vorhandene Sprachpakete protokolliert.

Im Registry Schlüssel [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageDetect] liegen hunderte Unterschlüssel in denen letztlich die Verweise auf die tatsächlich vorhandenen Installations- und Sprachpakete gespeichert sind. Diese wiederum liegen im Ordner C:\Windows\servicing.

Fehler 0x80073701
Im Registryschlüssel „PackageDetect“ finden sich an einigen Stellen Verweise auf Dateien aus dem italienischen Sprachpaket

In meinem Fall betraf es das Paket „Microsoft-Windows-FSRM-Core-Package~31bf3856ad364e35~amd64…“. Ein Blick in den Speicherort (C:\Windows\servicing) verrät, es gibt dort kein italienisches Sprachpaket. Im entsprechenden Registry-Key gab es aber einen Verweis auf jenes nicht vorhandene Sprachpaket. Stichproben in weiteren Registry-Keys ergaben, dass es unzählige solcher Verweise gab. Wie diese dorthin kamen konnte ich nicht nachvollziehen, jedoch waren sie der Grund für das Scheitern der Installation der Rollen und Features.

0x80073701 ERROR SXS ASSEMBLY MISSING
Im betreffenden Ordner fehlen die Sprachpakete, welche in der Registry eingetragen sind

Assembly konnte nicht gefunden werden

Die Lösung: Manuelles Entfernen hunderter Registrywerte. Natürlich sollte zuvor eine Sicherung des Systems oder zumindest des Registryschlüssels angefertigt werden. Sollte das System als virtuelle Maschine installiert sein, empfiehlt sich ein Snapshot, um im Falle eines Ausfalles schnell wieder auf den alten Stand zurückkehren zu können.

Damit die Werte gelöscht werden können, reicht es aus, dem Administrator vorübergehend Vollzugriff auf den Schlüssel „PackageDetect“ zu geben. Nach dem Löschen der Werte, sollte dies wieder rückgängig gemacht werden.

Referenzierte Assembly konnte nicht gefunden werden 0x80073701
Der angemeldete Administrator benötigt vorübergehend Vollzugriff auf den Registry Schlüssel „PackageDetect“ um Änderungen durchzuführen

Nachdem ich mühsam alle Verweise auf italienische Sprachpakete entfernt hatte, ließ sich die Rolle sofort installieren. Ein Neustart war nicht nötig.

Update: Die Installation von Windows Updates funktionierte in meinem Fall erst nach der manuellen Deinstallation des Sicherheitsupdates KB3213986 und einem anschließenden Neustart des Servers. Hinweise, dass dieses Update auch der Auslöser des obigen Fehlers ist, konnte ich bislang aber nicht entdecken.

Ebenfalls interessant:

Dieser Artikel ist wie alle anderen auf dieser Seite kostenlos für Dich und ich hoffe, ich konnte Dir weiterhelfen. Wer möchte, kann diesem Blog eine kleine Aufmerksamkeit in Form einer kleinen Spende (PayPal) oder über die Amazon Wunschliste zukommen lassen.

13 Gedanken zu „Assembly konnte nicht gefunden werden – 0x80073701“

  1. Vielen Dank für diesen Tollen Beitrag,
    Ich konnte leider das .NET Fremwork 3.5 Feature nich installieren, mit der gleichen Fehlermeldung:
    Assembly konnte nicht gefunden werden – 0x80073701
    Bei mir wars kein italienischers, sondern ein Taiwanese Mandarin Language Pack (zh-TW) welches den Fehler verursachte.

    Nachdem ich jetzt 2 Stunden nichts anderes als mich mittels Strg+f, del & enter durch die Registry gekämpft habe konnte ich .NET 3.5 erfolgreich installieren.

    Antworten
  2. Auch ich bedanke mich vielmals. Ebenfalls gebeutelter Strg+f, del & enter user aufgrund eines spanischen Verweises welches die Installation vom DHCP verhinderte.
    Toll geschrieben und echt hilfreich.

    Antworten
  3. Hallo, bei unserem Server 2016 werden keine kumulativen Updates installiert. Abbruch mit dem Fehler 0x80073701.
    Wie kamen Sie darauf , das Update KB3213986 zu deinstallieren, damit es dieses Problem löst? Der Serve wurde im Januar eingerichtet und das genannte Update ist auch drauf. Bevor ich das deinstalliere wollte ich gern noch weitere Quellen dazu erlesen.

    Danke

    Antworten
    • Hallo René,

      zu dem Zeitpunkt waren bei meiner Installation erst 3 Updates installiert. Eines davon war das KB3213986. Ob dies wirklich etwas damit zu tun hatte, kann ich bis heute nicht sagen.

      Interessanterweiser ist der Fehler bei Neuinstallationen seit April/Mai 2017 nicht wieder augetreten.

      Antworten
  4. Danke, die Registry putzen hat geholfen. Mit Hilfe von einem passenden registry editor geht das als Massenaktion erträglich, Neuaufsetzen eines Server 2016 Clusternodes mit Datacore-SAN + hyper-V wäre keine gute Alternative gewesen.

    Antworten
    • Hallo Joachim. Stimmt, das wäre wirklich eine sehr aufwendige Neuinstallation geworden. Freut mich umso mehr, dass Dir der Tipp weitergeholfen hat.
      Viele Grüße

      Antworten

Schreibe einen Kommentar