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.