C/C++ Windows PATH Variabe
Susanna
- programmiertechnik
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
你好 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()?
再见,
克里斯蒂安
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.
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
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
你好 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.
再见,
克里斯蒂安
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
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
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
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