Susanna: C/C++ Windows PATH Variabe

Hallo Forum,

in einem meiner C/C++ Programme möchte ich gerne die Windows PATH Variable bearbeiten. Wo finde ich diese, und wie mache ich das in etwa? Durch Google hatte ich bisher leider keinen Erfolg.

Vielen Dank
Gruß Susanna

  1. 你好 Susanna,

    in einem meiner C/C++ Programme möchte ich gerne die Windows PATH
    Variable bearbeiten. Wo finde ich diese, und wie mache ich das in etwa?
    Durch Google hatte ich bisher leider keinen Erfolg.

    getenv() bzw. setenv()?

    再见,
     克里斯蒂安

    --
    Zahnarztbesuch | Toilettenspruch II.
    Gernot Back: Was ich damit sagen will: Dein Gelaber fängt an, sogar mich zu nerven.
    http://wwwtech.de/
    1. Und gibt es keine Funktion, welche die globale Umgebungsvariable anspricht? Ich meine irgendwie muss das doch möglich sein, denn andere Programme, wie z.B. der Config-Wizzard von MySQL, können die PATH-Variable auch bearbeiten.

      Danke für Eure Hilfe.

      Gruß Susanna.

      1. Hi,

        Und gibt es keine Funktion, welche die globale Umgebungsvariable anspricht?

        Als Benutzer mit den entsprechenden Rechten.
        Ich bin mir aber nicht sicher, ob Du das on-the-fly machen kannst, also ohne Registry-Hack und Reboot.

        Ich meine irgendwie muss das doch möglich sein, denn andere Programme, wie z.B. der Config-Wizzard von MySQL, können die PATH-Variable auch bearbeiten.

        Ist der Opensource? Dann schau doch in die Quellen?

        so short

        Christoph Zurnieden

      2. Moin!

        Und gibt es keine Funktion, welche die globale Umgebungsvariable anspricht? Ich meine irgendwie muss das doch möglich sein, denn andere Programme, wie z.B. der Config-Wizzard von MySQL, können die PATH-Variable auch bearbeiten.

        Das hängt in erster Linie von der verwendeten Windows-Plattform ab. Die „grafischen Oberflächen für DOS“, also Windows 9x, erfordern die Änderungen der C:\autoexec.bat, hänge dort folgende an:

        set PATH=%PATH%;WasIchAnhängenMöchte

        Die Windows-NT-Reihe nutzt dafür wohl die Registry, das MSDN sollte dir dabei weiterhelfen.

        Grüße, Robert

      3. 你好 Susanna,

        Und gibt es keine Funktion, welche die globale Umgebungsvariable
        anspricht?

        Du möchtest also den Standard-Wert ändern? Naja, dazu musst du die Registry
        ändern:

        HKEY_LOCAL_MACHINE\SYSTEM\ControlSet<i>\Control\Session Manager\Environment\Path
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path

        <i> ist dabei eine fortlaufende Nummer. Wenn
        HKEY_LOCAL_MACHINE\SYSTEM\ControlSet<i> existiert, musst du es dort auch
        ändern.

        再见,
         克里斯蒂安

        --
        Zahnarztbesuch | Toilettenspruch II.
        1 + 1 = 3 für gosse Werte von 1.
        http://wwwtech.de/
    2. Hi,

      in einem meiner C/C++ Programme möchte ich gerne die
      getenv() bzw. setenv()?

      setenv() ist weder in C99(ISO-9899) noch in C++98(ISO-14882) sondern in POSIX(ab .9 glaube ich sogar).

      ;->

      so short

      Christoph Zurnieden

  2. Hallo Susanna,

    in einem meiner C/C++ Programme möchte ich gerne die Windows PATH Variable bearbeiten. Wo finde ich diese, und wie mache ich das in etwa?

    Aus dem Programm heraus kannst du Umgebungsvariablen nur abfragen, dafür gibt es getenv(). Ich bin mir nicht sicher, ob es auch setenv() als Gegenstück gibt. Aber wenn ja, kannst du damit Environment-Variablen nur für das laufende Programm selbst setzen, jedoch nicht global.

    Schönes Wochenende noch,

    Martin

    1. Hallo Martin,

      Aber wenn ja, kannst du damit Environment-Variablen nur für das laufende Programm selbst setzen, jedoch nicht global.

      Und für alle von diesem Programm aus gestarteten Programme.

      Viele Grüße,
      Christian

      1. Hi Christian,

        Aber wenn ja, kannst du damit Environment-Variablen nur für das laufende Programm selbst setzen, jedoch nicht global.

        Und für alle von diesem Programm aus gestarteten Programme.

        Selbstverständlich. Das Environment wird ja an Child-Prozesse vererbt - und das dürfte der Hauptgrund dafür sein, dass es so schwierig (unmöglich?) ist, aus einer Applikation heraus das Master Environment zu verändern. Das dürfte normalerweise nur die primäre Shell können.

        Den Aspekt der Child-Prozesse habe ich absichtlich "unterschlagen", da das für die wenigsten Anwendungsprogrammierer von Belang ist.

        Schönen Abend noch,

        Martin