Benutzerprofil „users“ verschieben unter Windows 7 / Vista

Wer seine Datensicherung trennen will nach System und Daten, dem mag es ein Dorn im Auge sein, dass die Benutzerdaten unter Windows auf der Systempartition abgelegt werden (c:\users). Die benutzerdefinierten Einstellungen und Dateien vieler Programme werden dort abgelegt. Das kann man ändern – soweit, dass man die Userdaten von der Datenpartition mitsichern kann.

Man benutzt dazu eine sog. „Junction“, dies ist ein NTFS-Feature, NTFS ist das Standard-Dateisystem von Windows. Junctions werden in Windows zB für die sprachliche Lokalisierung eingesetzt; man merkt das immer wieder, zB wenn man Programme installiert und dabei als Installationsordner „c:\program files“ angezeigt wird, obwohl er doch auf dem deutschen System „Programme“ heißt. Eine Junction ist eine potentere Verknüpfung – über sie können auch die Unterordner eines Ordners angesprochen werden.

Man zieht also Windows seinen users-Ordner unter dem Hintern weg und legt ihn woanders ab, dann verknüpft man System mit Daten über eine Junction. Und das geht so:

Man bootet vom Installationsmedium und fährt bis zum Punkt „Sprachauswahl“ fort. Dort drückt man Umschalt+F10, was die Eingabeaufforderung öffnet.

Die sich mit englischem Keyboard bedienen lässt – der Befehl „keyb“ ist offenbar nicht mehr vorhanden. Daher hier zur Erinnerung:
: = Shift+ö
/ = – (Bindestrich)
\ = # (Rautetaste)

Mit „dir“ prüft man, welche Laufwerksbuchstaben für das System und die anderen Partitionen vergeben wurden.

„dir c:“ und „dir d:“ (etc), dann erkennt man schon, ob man die richtigen Partitionen vor sich hat. Mit „dir“ erhält man ja nur den Inhalt der DVD (je nachdem, von wo man gebootet hat).

Diese [Laufwerksbuchstaben] können sich nämlich von der [vorhandenen] Windows-Installation unterscheiden. Wenn das Setup-Programm von Windows bei der Installation eine zusätzliche Bootpartition angelegt hat, wird diese unter laufendem Windows nicht angezeigt, von der Setup-DVD jedoch als Laufwerk C:\ eingebunden.

Hat man die richtigen Laufwerke gefunden, kopiert man mit
Code:

robocopy c:\users d:\users /mir /sec /xj

den Profilordner um. /mir/sec kopieren alle Ordner und Unterordner inkl. deren Rechte, /xj überspringt Junction. Den alten Profilordner löscht man mit
Code:

rd c:\users /s /q

vollständig und ohne Rückfragen. Nun legt man noch mit
Code:

mklink c:\users d:\users /j

einen Junction Point ein und bootet neu. Windows bekommt nichts von der Veränderung mit und man kann wie gewohnt im „alten“ Benutzerprofilpfad arbeiten, die Daten liegen jedoch auf einer anderen Partition.

Man überprüfe nach dem Reboot im Windows-Explorer die Ordner: Unter C: findet man einen Ordner „users“ mit einem Verknüpfungs(Junction)symbol. Unter D: findet man (Achtung!) den Ordner namens „Benutzer„. (Man neigt dazu, nach einem users-Ordner zu suchen – weil man die ganze Zeit über mit diesem Namen gearbeitet hat – und ihn nicht zu finden!) Et voilá – man kann D: komplett sichern, samt Benutzereinstellungen, und sich für C: einfach ein Image machen.

Den Tipp hab ich aus dem FAQ-Thread zum Thema Datensicherung auf forum.chip.de, der insgesamt sehr empfehlenswert ist und auch laufend aktualisiert wird.

——————————————————

EDIT 6.10.2012:
Die benutzten Junctions in Windows kann man sich ansehen bzw. in ein Textfile schreiben lassen:

To view the junctions with the command prompt, you can run dir /aL in a folder. This is also the easiest way to see where a Junction points. Just a normal dir won’t show them.
To view all the junctions in your computer, dir /aL /s > c:\JunctionsList.txt

Den Tipp hab ich von dort.
Ich weiß es noch nicht sicher, aber ich habe den Verdacht, dass die umgeleiteten User-Folder, also die mit Junctions, Probleme bei Windows7-SP1-Updates machen (oder anderen Updates in diesem zeitlichen Bereich). Nicht, dass ich eine Fehlermeldung beim Updaten gesehen hätte; es hat mir nur mein Benutzerprofil gecrasht, und das zweimal nacheinander. Mehr dazu weiter unten *).

Jetzt überlege ich, ob ich in der Registrierung die „hardcoded Links“ korrigiere, bevor ich diese Updates wieder installiere (ich hatte ja schonmal, und dann Systemwiederherstellung) – so ähnlich wie hier beschrieben. Hier werden allerdings explizit Fehlermeldungen bei Windows7-Updates besprochen, die daraus resultieren, dass die Benutzer ihre Programme-Ordner über junctions auf andere Laufwerke ausgelagert haben. Aber auch die user-junctions kommen in den Kommentaren vor. Noch sinniere ich.

Microsoft selbst räumt nur ein, „Using junctions to move around system folders can cause unforeseen problems„. Nageh! Echt? (Die Antwort von Sohodojo_Jim ganz unten fand ich besonders entzückend.)

*) Profil gecrasht in der Form, dass mein Profil nicht mehr zugänglich war, wechselweise in einem temporären Benutzerprofil gestartet wurde oder das Profil einfach gar nicht startete mit der Meldung „Die Anmeldung des Dienstes Gruppenrichtlinienclient ist fehlgeschlagen. Zugriff verweigert“. Und ja, ich hatte sehr lange keine Windows-Updates gemacht. Offenbar aber aus guter Intuition heraus.

Also folgte Systemwiederherstellung, ebenfalls mehrmals, und allerlei witziges Herumgegoogle und -probiere. Das schlaueste Vorgehen in dieser Situation übrigens: Ein neues Profil anlegen und Stück für Stück die alten Benutzerdaten aus dem alten Benutzerordner migrieren, sodass man am Ende seine Bookmarks und ähnliches herüberrettet, ohne das verstrahlte Profil nochmal öffnen zu können und ohne es in einem Schwung zu kopieren – das brachte nämlich nicht den gewünschten Erfolg: Das so hergestellte neue Konto war nach einem weiteren Neustart (und freilich nach diverser Einstellarbeit) ebenfalls nicht mehr zugänglich und schaltete auf „temp“ („Sie wurden mit einem temporären Profil angemeldet. Gehen Sie scheißen.“ oder so ähnlich).

Grundsätzlich kann man sich in dieser Situation auch so helfen, indem man mit einem (anderen als dem nicht zugänglichen) Admin-Profil einsteigt (ggf eben innerhalb des temporären Profiles ein solches anlegen) und in der Registrierung (ausführen – regedit – Achtung, keine Haftung für Schäden!) das Benutzerprofil aufspürt unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
und den langen Schlüssel des temporären Profils löscht oder in .old umbenennt.
Dem langen Schlüssel des nicht zugänglichen Profils nimmt man die .bak-Endung weg und setzt den „RefCount“-Wert auf Null.
(Man erkennt das Profil an einem der Werte rechts in der Liste, dort steht der Profilname im Klartext.)
In anderen Anleitungen steht auch, dass man den Wert „State“ auch auf Null setzen soll.
Danach abmelden und versuchen, sich mit dem zickigen Benutzerprofil anzumelden.

Ich übernehme wie gesagt für diese Art des Rettungsversuches keine Haftung! In meinem Fall funktionierte das einmal, worauf ich mich wie gesagt sehr freute und sehr lange meine Einstellungen wiederherstellte (nein, die sind dann NICHT einfach so alle wieder da) – und beim nächsten Neustart hatte ich dasselbe Problem wieder.

Weitere Tipps für diese Situation gibt es dort und dort.

Man sollte ja meinen, dass man mit so einer expliziten Fehlermeldung – wie der mit dem Gruppenrichtlinienclient – sehr schnell auf eine Lösung im Netz stößt, aber dem ist leider nicht so.

Falls jemand über Google hier gelandet sein sollte: Sorry für die verworrenen Anleitungen. Die sind eigentlich nur für mich selbst. Aber vielleicht helfen die Links ja weiter. 😉

Verknüpfung

Wie wird man in Windows das Beiwort „Verknüpfung“ los, wenn man händisch eine Verknüpfung erstellt?

In der Registry unter
HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer
(direkt im Root)
den Wert „Link“ suchen (Datentyp REG_BINARY). Den Wert auf „00 00 00 00“ setzen. Abmelden und neu anmelden, damit die neue Konfiguration übernommen wird.

Der Standardwert war in WinXP „28 00 00 00“, ab Windows Vista „16 00 00 00“ bzw. Vista SP1 „1e 00 00 00“.

(so auch in der Pfanne erschienen: http://etosha.weblog.co.at/?p=1841)