System nach SP1-Error 0xC0000034 aufräumen

Vom Fehler 0xC0000034 betroffene Systeme, die nicht mehr booten, müssen in Produktivumgebungen schnell wieder flott gemacht werden. Oft bleibt Windows 7 dabei in einem inkonsistenten Zustand zurück. Der Beitrag knotet einige lose Enden zusammen, und versucht Administratoren und PC-Supportern Hilfestellung zu geben, um betroffene Systeme in einen definierten Zustand zu versetzen.


Anzeige

Ja, wo laufen sie denn?

Der Fehler 0xC0000034 bei der Installation des SP1 stellt so etwas wie den größten anzunehmenden Unfall (GAU) dar. Das System bootet nicht mehr und muss irgendwie wieder flott gemacht werden. Unter [1] habe ich mich des Problems zu einem sehr frühen Zeitpunkt angenommen und skizziere, wie man das Problem angehen kann. Dabei werden verschiedene Reparaturansätze vorgeschlagen, wobei der Eingriff in die Datei pending.xml der am "vielversprechendste" Lösungsansatz zu sein schien. Unter [2] gehe ich auf ein VBscript-Programm von Microsoft ein, welches eine Kopie der pending.xml anfertigt und dann die kritischen POQ-XML-Knoten aus der Datei entfernt. Viele Benutzer konnten mit diesem oder den unter [1]  aufgeführten Ansätzen das System wieder flott bekommen. Zwischenzeitlich verweisen auch andere Blogs wie der von Microsoft Evangelist Daniel Melanchthon [7] oder Grand Stream Dreams [8] auf meine diversen Troubleshooting-Beiträge zum SP1. Ein ähnlicher Ansatz zum Eingriff in die pending.xml findet sich unter [12]. Wer noch etwas weiter recherchiert, trifft vermutlich im Internet (u.a. unter [4, 5]) auf folgende Handlungsanweisung, die Abhilfe ohne viel "Gehirnschmalz" verspricht.

  1. System mit Setup-DVD booten und in die Eingabeaufforderung wechseln.
  2. Mit dem Befehl cd \windows\system32\config\regback in den Ordner regback wechseln. Dort führt Windows Kopien der Registrierungsdateien (Hives). Die Kopien sollten älter als die SP1-Installation sein.
  3. Mit cd .. in das übergeordnete Verzeichnis wechseln und dann die Registrierungsdateien system und software umbenennen:ren system system.old
    ren software software.old
  4. Im nächsten Schritt werden die alten Backup-Dateien zurückkopiert:copy regback\system .
    copy regback\software .

Der Punkt hinter jedem Befehl erzwingt das Kopieren des Backups in den aktuellen Ordner. Wird dann das System neu gebootet, verwendet Windows 7 die alten Registrierungs-Hives beim Start und sollte wieder hochkommen. Dann wird noch empfohlen, die SP1-Installation beim Windows Software Update Server WSUS zu blockieren. Gut gemeint und klingt auch logisch. Das System startet wieder und alle sind glücklich.

Aber für allen Lösungen (einschließlich meiner Ansätze) gilt: gut gemeint ist das Gegenteil von gut gemacht.


Anzeige

Warum es Probleme gibt …

Bei den meisten Reparaturansätzen bleibt das System in einem inkonsistenten Zustand zurück. Mit obigem Ansatz oder durch Löschen der Registrierungseinträge, wie unter [1] beschrieben, bekommt man zwar sein System wieder flott. Windows 7 bleibt aber in einem inkonsistenten Zustand zurück.

Unter [9, 10] gehen die Entwickler vom Windows Server Core Team und MS-Entwickler Joscon auf die Problematik ein, warum auch das Editieren der pending.xml kontraproduktiv sein kann. Die pending.xml wird immer dann aufgebaut, wenn anstehende Updates Transaktionen benötigen, die ggf. nach einem Neustart zu Ende geführt werden müssen [11]. Eigentlich ein cleverer Ansatz, der jedoch einen Pferdefuß hat: Löscht man etwas aus der zurückgebliebenen pending.xml, kann die betreffende Transaktion nicht mehr zu Ende gebracht werden und Windows bleibt in einem inkonsistenten Zustand zurück.

Der Beitrag [10] vom Windows Server Core Team skizziert, wie die SP1-Installation als Drama in mehreren Akten über die Bühne gehen soll.

During service pack installation, we populate the pending.xml file with all of the files and registry values needed to install a particular update.  Service packs are special in that they are broken into critical and non-critical transactions to allow us to recover more quickly and reduce the no-boot window that could occur during installation.

During system shutdown, we process all of the critical transactions first and then the non-critical transactions.  If we fail processing the critical transactions, the service pack will just fail and rollback.  If the critical operations succeed but the non-critical operations fail, we attempt to process them on reboot using Session Manager (smss) and the SetupExecute registry value.  When the system reboots and reads the SetupExecute key, it retries installation first and if that fails it will roll back the Service Pack installation.  Deleting the registry value tells smss to not try and run the poqexec.  It should be reattempted again during startup processing or fail outright.  So effectively deleting the registry value breaks you out of the install fail reboot loop that the machine ends up being in.

Additionally, the pending.xml file has a checkpoint value that tells Windows where the critical transactions end and the non-critical transactions begin.  When you delete the checkpoint value in the pending.xml, its effectively marking everything in the pending operation queue as critical.  Because your machine has already rebooted, Windows thinks it has nothing to do and just boots normally.  The problem with this is that because there are still operations that need to be processed that will not get processed and this could potentially leave the machine in an even worse state. Doing this should be an absolute last resort. The best thing to do here is let the failure occur later on so a rollback can take place.

Tritt also bei der Installation ein Fehler beim Ausführen kritischer Transaktionen auf, kann Windows 7 ein Rollback durchführen. Werden Registrierungseinträge gelöscht, scheitert das Rollback.

Wird die pending.xml bearbeitet, gibt es das Problem, dass das Ende der kritischen Transaktionsphase gelöscht bzw. auskommentiert wird. Dann werden auch unkritische Transaktionen als kritisch bewertet. Selbst wenn nur der betroffene XML-Knoten auskommentiert wird, bleibt mindestens eine ausstehende Transaktion unvollendet. Die Microsoft-Entwickler geben an, dass das Editieren der pending.xml wirklich als letzte Lösung verwendet wird.

Der bessere Ansatz ist?

Bleibt nun noch die Frage, wie man cleverer vorgeht? Microsoft hat im Support-Beitrag unter [3] ja einige Methoden (u. a. das erwähnte Skriptprogramm mit den "Nebenwirkungen" aufgeführt). Methode 2 im erwähnten Beitrag, das System über die Systemwiederherstellung auf einen Punkt vor der SP1-Installation zurückzusetzen, ist einer der "sauberen Ansätze".

Auch der von mir unter [1] beschriebene Ansatz, mittels des Befehls:

DISM /Image:<windrive:\>
/Cleanup-Image /RevertPendingActions /ScratchDir:<dirname>

ein Rollback auf den Punkt vor der SP1-Installation zu erzwingen, führt Windows 7 in einen konsistenten Zustand zurück.

Alles schön und gut. Was aber, wenn DISM nicht funktioniert und die Systemwiederherstellung keine Wiederherstellungspunkte vor der SP1-Installation kennt? Oder was ist, wenn ich in der Not, das System wieder flott zu kriegen, zu einer der obigen Maßnahmen wie Backup der Registrierung oder Editieren der pending.xml greifen musste?

In der Regel sitzen Sie dann zwar mit einem funktionierenden, aber inkonsistenten System herum. Früher oder später wird es dann mit Updates oder anderen Funktionen Probleme geben. Es gilt also, das System nach Möglichkeit über einen anderen Ansatz in einen konsistenten Zustand zu bringen.

Ein Fix: Возьмите Россию тракторов

Hm, warum soll ich einen "russischen Traktor" nehmen? Nun, nicht dass ich von diesen Teilen besonders begeistert wäre (als Bauernsohn kenne ich noch die Erzeugnisse von Lanz, Hannomag, Eicher oder Deutz und weiß auch etwas mit dem Spruch "mein Vater fährt mit einem Porsche auf's Feld" anzufangen). Aber "russischer Traktor" ist für mich ein Synonym für einfachste Technik, die im Zweifelsfall funktioniert. War schon in der Raumfahrt so, wo eine simple Stoppuhr oder ein Bleistift genau so taten wie die mit vielen Dollars entwickelten High-Tech-Lösungen der Amis. Und spätestens, seit ich mit einer russischen Kamera auf einer Sahara-Exkursion war und erleben durfte, wie die Nikons, Canons oder was weiß ich im Sand den Geist aufgaben oder die Batterien schlapp machten, halte ich es mit "keep it simple".

Unter [14] habe ich einem Benutzer den Ansatz skizziert, wie man das System mit hoher Wahrscheinlichkeit wieder in einen konsistenten Zustand mit installiertem Service Pack 1 bringt. Der "russische Traktor" ist in diesem Fall ein Inplace Upgrade mittels der Windows 7 Setup-DVD mit integriertem Service Pack 1 [13]. Bei diesem Ansatz bleiben alle Einstellungen, Benutzerdateien und installierten Anwendungen erhalten, Setup bringt aber den Servicing-Packages-Stack in einen definierten Zustand.

Wie komme ich an eine ISO mit SP1?

Administratoren und Supporter im Firmenumfeld haben meist über ein Technet- oder MSDN-Abonnement Zugriff auf eine entsprechende ISO. Volumenlizenzkunden steht im Volume Licensing Service Center [17] die Möglichkeit zum Download einer ISO von Windows 7 mit integriertem Service Pack 1 offen. Unter [15] skizziere ich, wie man ggf. aus einer Ultimate-ISO einen universellen Installationsdatenträger bastelt.

Wer im Privatbereich sein "puttes" System mit einem entsprechenden Datenträger in einen konsistenten Zustand "nageln" möchte, hat ein Problem. Momentan ist mir noch keine Download-Seite für Windows 7 Installations-ISOs mit integriertem SP1 bekannt. Hier hilft nur, ein entsprechendes Installationsmedium selbst zu basteln. Wie dies geht, habe ich im Ansatz unter [16] skizziert.

Achtung: Im Internet schwirren recht viele Artikel zur SP1-Integration mit RT 7 Lite herum. Hier möchte ich auf [16] und den Hinweis von Joscon (in den Kommentaren unter [11] zu finden) verweisen. Nach meinen Kenntnissen geht dieser Offline-Integrations-Ansatz schief und die SP1-Integration gelingt nicht vollständig – sprich: wegen eines fehlenden Neustarts bei der Integration werden nicht alle Registrierungseinträge korrekt geschrieben.

Ist jetzt ein etwas länglicher Artikel geworden. Aber vielleicht hilft es dem einen oder anderen Admin bzw. Supporter weiter und gibt Anregungen, um betroffene Maschinen schrittweise in einen konsistenten Zustand zu überführen. In dieser Hinsicht viel Erfolg – und falls es geklappt hat, ggf. mal eine Rückmeldung geben. Zumindest in einigen Foren habe ich bereits positive Rückmeldung erhalten, dass der Ansatz funktioniert.

Links:
1: SP1-Installation hängt, Error C0000034/C000009A
2: MS-Script zum Beheben des SP1-Fehlers 0xC0000034
3: Microsoft Supportbeitrag zum Fehler C0000034
4: Saubere Lösung – kein Rumgefummel in xml-Files mit Notepad
5: Diskussion beim MCSE-Board
6: Blog-Beitrag zum Fehler
7: Blog-Beitrag von Daniel Melanchthon
8: Grand Stream Dreams-Blog-Beitrag (Englisch)
9: Why you don't want to edit your pending.xml … (Englisch)
10: Why you don't want to edit your pending.xml … (Englisch)
11: Pending.xml missing (Forendiskussion Englisch)
12: Fixing a bit of pending.xml (Englisch)
13: Windows 7 Reparatur, Inplace Upgrade bei SP1
14: Forendiskussion Reparatur eines beschädigten Systems
15: Universal Win 7 Installations-DVD basteln
16: Windows 7 Installations-DVD mit SP1 integrieren
17: Volume Licensing Service Center

Ähnliche Beiträge:
A: Windows 7 SP1 allgemein verfügbar
B: Winkelzüge: Windows 7 Service Pack 1 (Teil 1)
C: Winkelzüge: Windows 7 Service Pack 1 (Teil 2)
D: Kardinalfehler bei der SP1-Installation
E: Windows 7 Service Pack 1 Troubleshooting-Tipps
F: First Aid: Datenrettung, wenn Windows 7 versagt
G: Windows 7 ISO-Download – wo gibt's die?
F: Win 7 SP1-Fehler 0×80073701 (Assembly Missing)
H: Bugliste: Kollateralschäden durch's Service Pack 1
I: Service Pack 1 Fehlerdiagnose &
Package-Store(.mum,.cat) Reparatur

J: Microsoft Installer Cleanup Tool ist in "Rente"–wie fixe ich Installationsprobleme?
K: CBS-Store durch Updates defekt, wie reparieren?
L: Windows Update-Fehler 80240016
M: Verbesserungen im Service Pack 1
N: Win 7: Defekte Packages-Dateien reparieren
O: .NET-Framework macht Probleme


Anzeige

Dieser Beitrag wurde unter Allgemein, Installation, Problemlösung, Update abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

5 Antworten zu System nach SP1-Error 0xC0000034 aufräumen

  1. G.Born sagt:

    Unter [1] weist André darauf hin, dass die Ursache des Fehlers vermutlich eine Kollision des SP1-Installationsvorgangs mit einem laufenden Update ist.

    1:

  2. lonbinki sagt:

    Interessanter Weise hatte ich dieses Problem nun auch, obwohl ich erwartet hätte, dass es mitlerweile einen Fix dafür gibt. Naja jedenfalls habe ich den Workaround mit der pending.xml genutzt und nach einigem Fummeln läuft der PC nun auch wieder vernünftig. Allerdings ohne SP1, welches sich auch nicht installieren lässt. Fehlermeldung "error_access_denied (0x80070005)".

    Ist dir gerade bekannt, ob es eine Anleitung gibt, um einen konsistenten Zustand wieder herzustellen? Ich hab mitlerweile zwei Stunden gesucht und stoße immer wieder auf Anleitungen, die mir zwar sagen, dass ich nix mit der pending.xml machen soll. Aber ich habe noch nichts gefunden, wie ich das System wieder konsistent bekomme.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Bitte beachtet die Regeln zum Kommentieren im Blog (Erstkommentare und Verlinktes landet in der Moderation, gebe ich alle paar Stunden frei, SEO-Posts/SPAM lösche ich rigoros). Kommentare abseits des Themas bitte unter Diskussion.

Du findest den Blog gut, hast aber Werbung geblockt? Du kannst diesen Blog auch durch eine Spende unterstützen.