Die kurze Antwort
Ein Windows-Fehlercode wie 0x80070005 ist keine zufällige Nummer, sondern ein 32-Bit-Wert mit fester Struktur. Das führende 8 heißt „Fehler", die 7 an der vierten Stelle heißt „das ist ein ganz normaler Win32-Fehler", und die letzten vier Stellen sind dessen Nummer — hier 0005, also Zugriff verweigert. Wer das einmal verstanden hat, kann die meisten 0x8007…-Codes selbst einordnen, auch ohne Tabelle.
Wie ein HRESULT aufgebaut ist
Windows verpackt Fehler in einen sogenannten HRESULT. Die 32 Bit sind in Felder aufgeteilt, und jedes Feld beantwortet eine andere Frage:
| Bits | Feld | Bedeutung |
|---|---|---|
31 | Severity | 1 = Fehler, 0 = Erfolg. Deshalb beginnen Fehlercodes mit 8 oder höher. |
30–27 | Reserviert | Kennzeichnet u. a. herstellereigene Codes und aus NTSTATUS abgeleitete Werte. |
26–16 | Facility | Welches Teilsystem den Fehler gemeldet hat. Das ist das wichtigste Feld. |
15–0 | Code | Die eigentliche Fehlernummer innerhalb dieses Teilsystems. |
Warum die Facility so viel verrät
Die Facility grenzt die Ursache ein, noch bevor man die Fehlernummer kennt. Die Werte, die im Alltag praktisch immer auftauchen:
| Facility | Name | Typische Codes | Woran es meist liegt |
|---|---|---|---|
0 | NULL | 0x8000…, 0x8004… | Allgemeine COM-Fehler, oft ohne genauere Aussage |
7 | WIN32 | 0x8007… | Rechte, Dateien, Pfade, Dienste — die häufigste Gruppe |
15 | SETUPAPI / CBS | 0x800F… | Windows-Komponenten, Updates, Features |
36 | WINDOWSUPDATE | 0x8024… | Update-Dienst, Proxy, WSUS-Anbindung |
9 | SECURITY / SSPI | 0x8009… | Zertifikate, Anmeldung, Verschlüsselung |
12 | INTERNET | 0x8007 2Exx | Verbindung, TLS, Systemzeit |
HRESULT oder NTSTATUS — ein häufiger Irrtum
Nicht jeder Code, der mit 0x beginnt, ist ein HRESULT. Werte, die mit 0xC anfangen — etwa 0xC000000D — stammen aus dem Kernel und sind NTSTATUS-Werte mit eigenem Aufbau. Wer sie nach dem HRESULT-Schema liest, bekommt eine plausibel aussehende, aber falsche Facility. Das Werkzeug oben erkennt diesen Fall und sagt es dazu.
Wo Sie den vollständigen Code überhaupt finden
Viele Fehlerdialoge zeigen nur einen abgeschnittenen Hinweis oder gar keinen Code. Die vollständige Nummer steht fast immer an einer dieser drei Stellen:
- Ereignisanzeige (eventvwr.msc) unter Windows-Protokolle → Anwendung und System. Nach Zeitstempel filtern, nicht nach Text — der Eintrag mit dem Code liegt oft Sekunden neben dem, der die Meldung ausgelöst hat.
- Windows Update: Einstellungen → Windows Update → Updateverlauf. Dort steht hinter jedem fehlgeschlagenen Eintrag der 0x…-Code, den der Dialog selbst verschweigt.
- PowerShell übersetzt einen Win32-Fehler direkt in Klartext, ganz ohne Nachschlagewerk: [ComponentModel.Win32Exception]::new(5).Message liefert für die 5 die Systemmeldung in der eingestellten Sprache. Das ist der schnellste Weg, wenn Sie die Nummer bereits aus der Facility WIN32 herausgelöst haben.
Ein praktischer Hinweis noch: Notieren Sie sich immer den vollständigen achtstelligen Code. 0x80070005 und 0x80090005 unterscheiden sich in einer Ziffer, kommen aber aus völlig verschiedenen Teilsystemen — das eine ist ein Rechteproblem, das andere betrifft die Sicherheitsschicht. Wer nur „Fehler 5" weitergibt, verliert genau die Information, die den Unterschied macht.
Wenn das nicht hilft
Manchmal ist der Code korrekt entschlüsselt und man ist trotzdem nicht schlauer, weil 0x80004005 („unspezifischer Fehler") schlicht nichts aussagt. Dann helfen drei Dinge, in dieser Reihenfolge:
- Den Kontext lesen, nicht den Code. In der Ereignisanzeige steht unter Windows-Protokolle → Anwendung und System fast immer ein zweiter Eintrag mit demselben Zeitstempel, der konkreter ist als der Code selbst.
- Bei Update-Fehlern (0x800F…, 0x8024…) die Protokolle direkt ansehen: C:\Windows\Logs\CBS\CBS.log nennt die Datei oder Komponente, an der es scheitert — der Fehlercode allein nennt sie nie.
- Systemdateien prüfen lassen mit DISM /Online /Cleanup-Image /RestoreHealth und anschließend sfc /scannow. Diese Reihenfolge ist nicht beliebig: sfc braucht einen intakten Komponentenspeicher, den DISM zuvor repariert.
Ein Hinweis zur Erwartung
Ein Fehlercode beschreibt, woran eine Aktion gescheitert ist — nicht, warum. 0x80070005 sagt „Zugriff verweigert", aber nicht, ob eine Datei gesperrt war, ein Dienstkonto zu wenig Rechte hatte oder ein Virenscanner dazwischenfunkte. Die Zerlegung oben ist der Anfang der Fehlersuche, nicht ihr Ergebnis.