Kleine Programme als Portable Anwendungen programmieren?



  • Na na, Windows hat auch sowas wie $HOME! Weiß nur nicht wie die Variable dazu heißt. 😉



  • %USERPROFILE%



  • Artchi schrieb:

    Na na, Windows hat auch sowas wie $HOME! Weiß nur nicht wie die Variable dazu heißt. 😉

    %HOMEDRIVE%%HOMEPATH%

    %HOMEDRIVE% ist in der Regel C:, %HOMEPATH% dann "\Dokumente und Einstellungen\%USERNAME%" bei XP, bzw. "\Users\%USERNAME%" bei Vista.
    Alternativ existiert noch %USERPROFILE%, das den selben Wert wie die beiden obigen beinhaltet

    @T: Lass dem User die Wahl. Vor allem bei Konfigurationsdateien ist es auf Multi-User-Systemen ärgerlich, wenn man diese nicht personalisieren kann. Außerdem bleibt da noch der Punkt mit den fehlenden Schreibrechten im Programmverzeichnis. Es zeugt von schlechten Stil, wenn ein Programm nur wegen der konsequenten Missachtung der Sicherheitsrichtlinien Admin-Rechte benötigt um zu funktionieren.
    Wo du derartige Dateien speichern solltest, kannst du ganz einfach aus der Registrierung auslesen. Der Schlüssel befindet sich unter HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\AppData . Wenn du keine Lust hast, die dortigen Umgebungsvariablen selbst zu übersetzen, steht unter ..\Shell Folders\AppData der entsprechend bereits übersetzte Wert bereit. Microsoft rät aber von der Verwendung dieses Schlüssels ab.

    Ansonsten solltest du dir das mal durchlesen...



  • Artchi schrieb:

    Na na, Windows hat auch sowas wie $HOME! Weiß nur nicht wie die Variable dazu heißt.

    für 'richtige' windoze-programme: %SystemRoot%
    🙂



  • Machine schrieb:

    also ich habe schon recht viele mini-tools programmiert und ich schwöre auch dadrauf, dass ich sie aufm usb-stick umhertragen kann...

    dito. einfach das verzeichnis auf den stick kopieren und man nimmt gleich alle settings mit. mache ich auch immer so.
    🙂



  • zwutz schrieb:

    Artchi schrieb:

    Na na, Windows hat auch sowas wie $HOME! Weiß nur nicht wie die Variable dazu heißt. 😉

    %HOMEDRIVE%%HOMEPATH%

    %HOMEDRIVE% ist in der Regel C:, %HOMEPATH% dann "\Dokumente und Einstellungen\%USERNAME%" bei XP, bzw. "\Users\%USERNAME%" bei Vista.
    Alternativ existiert noch %USERPROFILE%, das den selben Wert wie die beiden obigen beinhaltet

    Das ist so typisch MS. Wieso einfach, wenn es auch kompliziert geht? Ansatt ins %HOMEPATH% einfach den Pfad (C:/DuE/Username) anzugeben, braucht man auch noch %HOMEDRIVE%.

    Da goenn ich doch ds Unix-Filesystem. Ich schreib einfach alles ins /home/user und mir ist es egal, ob /home/user in einem Netzwerk, auf einem Bandlaufwerk oder auf dem Mond liegt.



  • DEvent schrieb:

    Das ist so typisch MS. Wieso einfach, wenn es auch kompliziert geht? Ansatt ins %HOMEPATH% einfach den Pfad (C:/DuE/Username) anzugeben, braucht man auch noch %HOMEDRIVE%.

    Da goenn ich doch ds Unix-Filesystem. Ich schreib einfach alles ins /home/user und mir ist es egal, ob /home/user in einem Netzwerk, auf einem Bandlaufwerk oder auf dem Mond liegt.

    deswegen existiert auch %USERPROFILE%, wie ich aber oben bereits erwähnt habe

    die Trennung besteht, da man dann zum Beispiel innerhalb einer Batch-Datei mittels

    %HOMEDRIVE%
    cd %%HOMEPATH%
    

    in den Benutzerordner gelangt, auch wenn man sich auf nem anderen Laufwerk befindet. ( cd kann nur innerhalb eines Laufwerkes navigieren)



  • SHGetFolderPath



  • DEvent schrieb:

    Da goenn ich doch ds Unix-Filesystem. Ich schreib einfach alles ins /home/user und mir ist es egal, ob /home/user in einem Netzwerk, auf einem Bandlaufwerk oder auf dem Mond liegt.

    Besser man nimmt die Umgebungsvariable HOME. Schade, daß Microsoft nicht die Mühe macht und einfach HOME auf %HOMEDRIVE%/%HOMEPATH% oder was auch immer zu setzen. Dann könnte man selbst unter Windows einfach HOME nehmen und braucht sich nicht darum zu kümmern, daß ein völlig anderes Betriebssystem vorliegt.

    Übrigens fürchte ich, daß das I/O selbst für einfache Konfigurationsdateien ungenügend ist, wenn mein Homeverzeichnis auf dem Mond liegt 😃 .



  • zwutz schrieb:

    DEvent schrieb:

    Das ist so typisch MS. Wieso einfach, wenn es auch kompliziert geht? Ansatt ins %HOMEPATH% einfach den Pfad (C:/DuE/Username) anzugeben, braucht man auch noch %HOMEDRIVE%.

    Da goenn ich doch ds Unix-Filesystem. Ich schreib einfach alles ins /home/user und mir ist es egal, ob /home/user in einem Netzwerk, auf einem Bandlaufwerk oder auf dem Mond liegt.

    deswegen existiert auch %USERPROFILE%, wie ich aber oben bereits erwähnt habe

    die Trennung besteht, da man dann zum Beispiel innerhalb einer Batch-Datei mittels

    %HOMEDRIVE%
    cd %%HOMEPATH%
    

    in den Benutzerordner gelangt, auch wenn man sich auf nem anderen Laufwerk befindet. ( cd kann nur innerhalb einhttp://www.german-bash.org/action/latestes Laufwerkes navigieren)

    Das stimmt nicht cd kann auch das Laufwerk wechseln. Gib einfach mal cd /? ein und schau dir die Flags an.



  • lolz_ausgeloggt schrieb:

    Das stimmt nicht cd kann auch das Laufwerk wechseln. Gib einfach mal cd /? ein und schau dir die Flags an.

    der parameter /D ist mir durchaus bekannt, aber cd ohne Parameter, so wie er oft verwendet wird, kann nur innerhalb des Laufwerkes navigieren.

    tntnet schrieb:

    Besser man nimmt die Umgebungsvariable HOME. Schade, daß Microsoft nicht die Mühe macht und einfach HOME auf %HOMEDRIVE%/%HOMEPATH% oder was auch immer zu setzen. Dann könnte man selbst unter Windows einfach HOME nehmen und braucht sich nicht darum zu kümmern, daß ein völlig anderes Betriebssystem vorliegt.

    das würde schon aus dem Grund schiefgehen, da beide Systeme unterschiedliche Methoden nutzen, Umgebungsvariablen zu kennzeichen. Unter Windows sind sie mit Prozentzeichen eingeschlossen, Unix verwendet das Dollarzeichen am Beginn der Variable



  • %HOME% wenn ich nicht alles täuscht



  • audacia schrieb:

    %USERPROFILE%

    Ist die einzige richtige Lösung, da auf Windows nicht garantiert werden kann, dass das Profile auf C:\...etc liegt.



  • tntnet schrieb:

    Schade, daß Microsoft nicht die Mühe macht und einfach HOME auf %HOMEDRIVE%/%HOMEPATH% oder was auch immer zu setzen. Dann könnte man selbst unter Windows einfach HOME nehmen und braucht sich nicht darum zu kümmern, daß ein völlig anderes Betriebssystem vorliegt.

    Schade, daß sich die Linux-Entwicklercommunity nicht die Mühe macht, einfach %USERPROFILE% auf $HOME zu setzen und auch sonst Linux zu Windows kompatibel zu machen 😉

    Übrigens hat Microsoft sich bereits die Mühe gemacht, allerdings etwas ausführlicher:
    Microsoft Windows Services for UNIX



  • zwutz schrieb:

    das würde schon aus dem Grund schiefgehen, da beide Systeme unterschiedliche Methoden nutzen, Umgebungsvariablen zu kennzeichen. Unter Windows sind sie mit Prozentzeichen eingeschlossen, Unix verwendet das Dollarzeichen am Beginn der Variable

    Ob ich %HOME% oder $HOME verwende, hängt von der Shell ab. Die bash unter Linux verwendet wie auch die sh unter Unix $HOME um den Inhalt der Umgebungsvariable HOME zu liefern. Der Kommandointerpreter von Windows (cmd.exe) verwendet halt %HOME% um das gleiche zu erreichen. In einem C++ oder C-Programm verwende ich getenv("HOME"). Das liefert mir den Wert der Umgebungsvariablen "HOME". Und das ist unabhängig vom Betriebssystem.



  • audacia schrieb:

    tntnet schrieb:

    Schade, daß Microsoft nicht die Mühe macht und einfach HOME auf %HOMEDRIVE%/%HOMEPATH% oder was auch immer zu setzen. Dann könnte man selbst unter Windows einfach HOME nehmen und braucht sich nicht darum zu kümmern, daß ein völlig anderes Betriebssystem vorliegt.

    Schade, daß sich die Linux-Entwicklercommunity nicht die Mühe macht, einfach %USERPROFILE% auf $HOME zu setzen und auch sonst Linux zu Windows kompatibel zu machen 😉

    Übrigens hat Microsoft sich bereits die Mühe gemacht, allerdings etwas ausführlicher:
    Microsoft Windows Services for UNIX

    Die Umgebungsvariable HOME war unter Unix schon auf das Heimatverzeichnis gesetzt, als es noch kein MS-DOS geschweige denn Windows gab. Da wäre es doch eine Kleinigkeit gewesen, wenn man das übernommen hätte. Microsoft hat mit USERPROFILE das Rad neu erfunden - nicht Unix oder Linux.


Anmelden zum Antworten