Autsch! Ich dachte, die Zeit hartkodierter Pfade wäre vorbei...
Erstens wird der Code nur auf Vista+ das "richtige" Verzeichnis finden und zweitens wird das auf Vista+ auch nur dann funktionieren, wenn der Nutzername exakt mit dem Namen des Verzeichnisses übereinstimmt. Punkt 1 sollte klar sein, denn das Profilverzeichnis liegt bei den versch. Windows-Versionen woanders. Bei Win2k/XP ist es sogar noch lokalisiert = an die Landessprache angepasst und vom Laufwerk C: will ich jetzt nicht auch noch anfangen...
Punkt 2 erkläre ich mal etwas näher: Ich erstelle ein Benutzerkonto "Willi", das es bisher noch nicht gab. Die erste Anmeldung dieses Benutzers erstellt das Verzeichnis "Willi" im Profilverzeichnis. Später fällt mir ein, dass der Benutzername doch nicht so toll ist und ich benenne ihn um in "Hans". Ergebnis: Das Benutzerkonto bleibt liegen in "Willi", deine Funktion wird aber "Hans" als Nutzername ermitteln und versucht, dort zu speichern, was natürlich nicht funktionieren kann (es sei denn, das Programm läuft als Admin = böse).
Also bitte
unbedingt entsprechende
API-Funktionen wie SHGetFolderPath oder SHGetKnownFolderPath (erst ab Vista verfügbar!) benutzen, um die gewünschten Verzeichnisnamen zu ermitteln.
MfG Dalai