Standart "User-Pfad" herausfinden?



  • Hallo

    Wie findet man mittels MFC den aktuellen User-Pfad heraus?
    Beispielsweise unter Windows XP: C:\Users\IrgendeinUserName\Documents\ ??
    Oder unter Windows Vista: C:\Benutzer\IrgendeinUserName\Dokumente
    jenachdem welche Sprache eingestellt ist auch C:\Users oder ähnliches.

    Es geht darum, dass mein Programm eine INI-Datei schreiben muss. Unter Windows Vista zum Beispiel geht das nicht, weil man durch das Programm nicht auf C:\\ speichern kann. Da ich nicht weiss, welches Betriebsystem benutzt wird und wie viele Partitionen vorhanden sind, müsste ich wissen wie man das Programm den Aktuellen Pfad des Benutzers automatisch herausfinden kann?

    Ich denke an so etwas:

    %USER_PATH% gibt dann (abhängig vom Betriebssystem) den Pfad z.B: C:\Benutzer\Wolf\Documents als String zurück.

    Gibt es da in dieser Art solche Standartwerte welche auf allen Windowssstem (Wichtig sind XP, Vista, Windows 7) funktionieren?

    lg
    Wolf

    CString usr_path;
    usr_path = GetPath(%USR_PATH%) ???



  • Habe schon lange kein Windows mehr und sowieso fast nie drauf programmiert,
    aber afaik gibt es %HOME% auf allen systemen - das sollte sein was du suchs.

    ansonsten gibt mal auf der cmd.exe 'set' ein ....

    mfg Branleb



  • SHGetFolderPath mit CSIDL_MYDOCUMENTS



  • SH... dass ich nicht früher darauf gekommen bin. Natürlich kenn ich die SH-Funktionen allerdings bis jetzt nur im Ordner-Management löschen und erstellen aber nicht darüber um die aktuellen pfade ausfindig zu machen. Ich werde mich daran versuchen und auch das HOME ausprobieren. 🙂

    Habe es aber inzwischen so gelöst, dass die Ordner immer dort erstellt werden wo sich das aktuelle Programm befindet.

    lg
    Wolf

    Danke an Euch



  • Wolf1985 schrieb:

    Habe es aber inzwischen so gelöst, dass die Ordner immer dort erstellt werden wo sich das aktuelle Programm befindet.

    Das geht reproduzierbar in die Hose.
    Unter C:\Programme darf ein User nicht speichern.
    Dein Programm würde also nur als Administrator laufen, und dadurch viele User vor unlösbare Probleme stellen.

    Benutze wirklich die SHGetSpecialFolder-Funktion


Log in to reply