Programmpfad zur laufzeit herausfinden



  • Hallo ihr lieben Leute,
    meine Frage bezieht sich darauf, dass cih zur Laufzeit herausfinden muss, wo sich meine ausführbare Datei befindent, warum sei jetzt mal egal....

    Bevor vorschnelle antworten kommen, ich will es nciht über argv[0] machen, da dort nämlich nix drin steht, wenn jemand auf die graniose idee kommt, das programm in eines der Verzeichnisse zu packen die in der umgebungsvariable path stehen.

    Gibts ne schöne andere möglichkeit? zur not akzeptiere ich auch eine unschöne 😉

    Vielen Dank
    mit freundlichem Gruß
    Nils



  • Mach das doch über argv[0].

    Oder pack das Programm doch einfach in ein Verzeichnis, das in der Umgebungsvariable path steht.

    😃

    Oder vielleicht hilft ja auch was aus der FAQ:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39131.html





  • CString strIniFile = GetCommandLine();
    int pos = strIniFile.ReverseFind('.');
    strIniFile = strIniFile.Mid(1, pos);
    strIniFile += "ini";
    

    GetCommandLine() liefert den kompleten Pfad deiner exe-datei. Das obige Beispiel macht aus "c:\testpfad\test.exe" -> "c:\testpfad\test.ini"

    oh, sorry! hatte die Antwort von Unix-Tom nicht gesehen... :p



  • Ja sorry, hatte es mit der suche versucht, aber auf die schenlle ncihts gefunden, und habg erade nur ganz wenig zeit.
    Danke dass ihr trotzdem geantwortet habt, nächstesmal schau cih au in die faq VERSPROCHEN

    PS: auch wenn es hier nicht mehr ganz so hingehört, und auf die gefahr, dass es schon irgendwo stehen könnte, gibts eine etwas OS unabhängigere variante?
    Danke gruß nils



  • PPS: GetCommandLine macht auhc nichts anderes als argv[0] auszuwerten, das bringt also nix, aber mit GetModuleName scheint es zu klappen, teste malw eiter dran rum, evnetuell solle man die Anmerkung in der FAQ hinzufügen.


Anmelden zum Antworten