Windows Filtertreiber Reihenfolge

Beschreibung eines mittleren Desasters einer Windows 7 Installation, die ich aber nicht durch eine Neuinstallation retten wollte. Also musste ich etwas forschen. Hier meine Zusammenfassung

Diese Seite "leider" nichts mit der MSXFAQ, Exchange oder Lync zu tun, sondern hat mich einige Stunden Arbeit gekostet, meinen Notebook wieder "fit" zu machen. Im Rahmen meiner normalen Putzaktion habe ich ein paar Programme deinstalliert, die ich schon länger nicht mehr verwendet habe. Darunter war z.B. auch Acronis TrueImage, mit dem ich früher meinen PC auf eine USB-Wechselfestplatte gesichert habe. Und auch wenn das Setup alles angeblich sauber entfernt hat, muss ein Rest übrig geblieben sein.

Schrecksekunde und Windows 7 Reparatur und "vorherige Versionen"

Denn beim nächsten Neustart ist das System nach wenigen Sekunden in einen klassischen "Bluescreen" gelaufen. Die Fehlernummer war ein "Treiber fehlt"-Thema. Nun bin ich mir keiner Schuld bewusst, dass ich einen SATA-Treiber entfernt haben sollte. Windows hat nach einigen Fehlversuchen alleine eine Reparatur angeboten, aber kam nicht zum erfolg. Also hieß es wieder die Windows 7 DVD raus kramen und darüber eine "Computerreparatur" vorzunehmen. Erschwerend war natürlich nun, dass Bitlocker die Installation geschützt hat. Ich durfte in der Folge einige Male den Recoverykey eingeben, da sich das Startmedium geändert hatte.

Die erste Reparatur war schon mal nicht erfolgreich und beim dritten Mal habe ich von Hand eingegriffen und eine etwas ältere "vorherige Version" wieder herstellen lassen. Interessant ist dabei wirklich, dass die Nutzdaten (z.B. auch Änderungen an der MSXFAQ) erhalten geblieben sind. Windows stellt also nicht die komplette Partition "zurück" sondern nur die systemrelevanten Dateien und Einstellungen. Und er zeigt sogar an, welche Änderungen an der Installation damit wieder ungeschehen gemacht werden. Mit der Deinstallation von Trueimage sind natürlich noch ein paar andere Programme entfernt worden. Aber so weit bin ich gar nicht zurück gegangen.

Ich habe mich schon gefreut, dass beim nächsten Restart Windows wieder sauber hochgefahren ist aber das war nur von kurzer Dauer. Schon beim nächsten Reboot war dieser der gleiche Bluescreen da. Nun hatte ich aber schon Übung und habe per DVD erneut den den vorherigen Stand hergestellt. Aber vor dem nächsten Neustart bin ich auf die Suche gegangen, was hier passiert sein konnte.

Verflixte Filter

Ehe ich neu gestartet habe, habe ich natürlich den Berühmten "PendingFileRenameOperations"-Key geprüft. Nicht dass hier noch ein "Delete Treiber" drin ist. Über die Windows Installation DVD kann man ja auch eine CMD-Box öffnen und REGEDIT starten. RegEdit zeigt aber die Key der laufenden Recovery-Version. Man muss also schon die passenden Dateien von der inaktiven Windows-Installation noch mounten und zu untersuchen. Weiterhin kann man per CMD-Befehlen natürlich die Verzeichnisse ablaufen. Aber auch ein Notepad steht zur Verfügung und der "öffnen"-Dialog ist durchaus ein brauchbarer Mini-Explorer.

Und einige Schlüssel hatte ich da schon im Verdacht. Es gibt nämlich nicht nur die einfachen Gerätetreiber, sondern Windows erlaubt es, vor und hinter die Treiber noch weitere Filter einzubinden. So kann Windows einen generischen Treiber für Massenspeicher nutzen, aber z.B. für SD-Karten einen Filter zwischen den Treiber und die Hardware klemmen, der bestimmte Besonderheiten des Geräts berücksichtigt, z.B. TRIM-Kommando etc.

Auch vor den Treiber können Filter gesetzt werden, um z.B. den Zugriff darauf zu steuern. Von der Firma busTRACE gibt es das Programm "Filter Driver Load Order" (devfilter.exe, welches schön anzeigt, welche Filtertreiber zu den Geräten vorhanden sind. Hier die "aufgeräumte" Version

Bei meiner "toten" Windows Installation konnte ich natürlich nicht mit dem Programm anrücken. Da musste ich schon selbst in der Registrierung nach "LowerFilters" und "upperFilters" suchen. Und ich haben einige Einträge mit verweisen auf Treiberdateien gefunden, die ich genauer untersucht habe.

HKEY_UserS\System\ControlSet001\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}

Hier wurde ich fündig und dann habe ich folgendes getan:

  • Shockprf Lenovo disabled
    HKEY_UserS\System\ControlSet001\services\Shockprf start 0->3
  • PartMgr Microsoft
    DzHDD64 Lenovo disabled aus upperFilter entfernt
    HKEY_UserS\System\ControlSet001\services\DzHDD64\Start von 0-> 3
  • snapman Acronis disabled
    HKEY_UserS\System\ControlSet001\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}\Lowerfilters snapman entfernt

Danach sollten die ganzen Treiber nicht mehr aktiv sein

Kollateralschäden

Diese systemnahe Änderungen hatten ein paar Seiteneffekte.

  • Kein USB-Laufwerk
  • keine SDKarten
  • kein CDRom.

Ok, so kann man natürlich nicht arbeiten.

Weitere Treiber

Durch die wiederholte "Rücksetzen auf vorherige Version muss es aber doch noch ein paar andere Dateien verwirbelt haben, denn wenn ich ein neues USB-Headset angeschlossen habe, konnte der PC keine Treiber mehr finden. Nicht mal ein einfacher generischen USB-Hub konnte alleine installiert werden. Allerdings konnte ich den Treiber manuell auswählen. Auch hier half Tante Google weiter, die mich auf die Spur gebracht hat: Es musste am Drivercache liegen bzw. den INF-Dateien. Folgende Schritte haben zu einem Teilerfolg geführt.

  1. CMD.EXE als Admin starten
  2. "cd %systemroot%\System32\DriverStore"
    um in das richtige Verzeichnis zu wechseln.
  3. "takeown /f infcache.1"
    ausführen, um "Besitzer dieser Datei zu werden
  4. "icacls infcache.1 /grant %UserNAME%:F"
    um die Rechte zu erhalten
  5. "del infcache.1"
    um diese Cachedatei zu entfernen

Danach konnte ich die CMD-Box wieder verlassen. Normalerweise sollte man den PC dann durchstarten aber kaum habe ich nach neuen Geräten gesucht oder ein neues Gerät eingesteckt, hat er alle Treiber alleine installiert.

Einzig mit den Druckern hadere ich noch etwas. Alle vorhandenen Drucker funktionieren und ich kann auch manuell neue Netzwerkdrucker installieren. Nur das Verbinden mit einem besonderen HP-Drucker im LAN über den Server funktioniert nicht, da er angeblich einen aktuelleren Treiber vom Server laden und installieren will und mit FILEMON sehe ich schön, dass ich als "normaler User" lokal am Ziel nicht schreiben darf. Als LRP/RAW-Drucker direkt funktioniert der Ausdruck. Das Problem ist also vertagt und ich vermute dass dies durch die sowieso geplante Windows 8 Frischinstallation nicht mehr lange vorhanden ist.

Weitere Links