In Windows Umgebungsvariable setzen
-
Hallo,
vielleicht kann mir hier jemand helfen! Ich habe so gut wie keine Ahnung von C und kann es aus Zeitgründen in seinen Tiefen auch nicht lernen!
Ich brauche lediglich ein Programm (.exe), dass mir eine Umgebungsvariable in Windows setzt (z.B.: Variable TEST mit WERT ABCD).
Als Compiler habe ich mir Turbo C 2.01 von Borland aus dem Internet geholt.
Ich bin für jede Hilfe dankbar?MfG
-
Hmmm ich würde es hald noch viel einfacher mit einer Batchdatei machen:
rem Datei setztest.bat set TEST=ABCD
-
Ich brauche aber eine .exe die nicht jeder einsehen soll! Ich habe es bereits mit dem SYSTEM Befehl versucht z.B. SYSTEM(set TEST=ABCD). Das funktioniert aber nicht!
Es funktioniert nur SYSTEM(set)! Ich will die Umgebungsvariablen ja nicht anzeigen lassen, sondern setzen!!! Die Umgebungsvariable soll auch nur temporär gesetzt werden.
Ich habe auch im Internet den Befehl setenv() gefunden, aber ich verstehe die Syntax nicht!
-
hier stehts gut beschrieben:
http://www.delorie.com/djgpp/doc/libc/libc_698.html
achtung: kein standard, hoffe, der turbo c kann es (denke aber schon), wenn nicht, auf den djgpp ausweichen.
-
Rufzeichen werden zudem als Ausrufezeichen benützt und kommen eigentlich nur sehr selten vor. Wenn sie allerdings vorkommen, dann immer nur einzeln.
MfG SideWinder
-
Ich hab auch ein ähnliches Problem, und zwar möchte ich Umgebungsvariablen ausgeben lassen. Ich hab den entsprechenden Befehl "getenv" verwendet:
std::cout << getenv(PATH) << std::endl;
Beim compilieren erscheint dann: 'PATH' : undeclared identifier
Wie soll ich die Funktion denn richtig aufrufen?
-
getenv("PATH")
MfG SideWinder
-
Kann man das nicht eigentlich auch mit WinExec realisieren? Oder gibt es durch Turbo C Probleme?
-
Kevinus schrieb:
Kann man das nicht eigentlich auch mit WinExec realisieren? Oder gibt es durch Turbo C Probleme?
Sorry, ich verstehe nicht worauf die hinaus willst.
MfG SideWinder
-
Ich meine ob man fürdas setzen von Umgebunsvariablen nicht den Befehl WinExec verwenden kann.
-
Toasterwilli schrieb:
Ich hab auch ein ähnliches Problem, und zwar möchte ich Umgebungsvariablen ausgeben lassen. Ich hab den entsprechenden Befehl "getenv" verwendet:
std::cout << getenv(PATH) << std::endl;
Beim compilieren erscheint dann: 'PATH' : undeclared identifier
Wie soll ich die Funktion denn richtig aufrufen?
Vielen Dank! Kann mir vielleicht auch noch jemand sagen, wie ich den Rückgabewert in einen String reinbekomm? Ich nämlich eine Umgebunsvariable verwenden, um mit execl eine Anwendung zu starten.
-
#include <string> ... string envPath = getenv("PATH"); // do something with envPath
BTW: Sucht exec nicht sowieso automatisch im PATH nach der Executable? Bzw. zumindest die WinAPI-Funktion die sich hinter exec verbirgt?
MfG SideWinder
-
Funktioniert die Posix Lösung von Elise
http://www.delorie.com/djgpp/doc/libc/libc_698.html
auch für DOS/Windows. Ich meine mann kann zwar für ein Environment das von einem Process/Programm aufgerufen wird dies ändern, Das set gilt aber nicht für das eigene Environment und wird nach dem Ende des Programms wieder gelöscht.
-
SideWinder schrieb:
#include <string> ... string envPath = getenv("PATH"); // do something with envPath
BTW: Sucht exec nicht sowieso automatisch im PATH nach der Executable? Bzw. zumindest die WinAPI-Funktion die sich hinter exec verbirgt?
MfG SideWinder
Das hab ich mich auch gefragt, ich hab mich jetzt nämlich nochmal mit meinem alten Problem beschäftigt.
Ich hab ein Programm, dass im PATH eingetragen ist, ich kann es unter der Konsole also in einem beliebigem Verzichnis aufrufen. Mit execl geht das nicht.
Wie könnte ich denn das machen?Ich hatte noch die Idee, mit getenv den Pfad auszulesen, aber woher weiß das Programm dann, welchen Pfad genau, es stehen ja lauter verschiedene in dieser Variable?
-
TIGER1 schrieb:
Hallo,
Ich brauche lediglich ein Programm (.exe), dass mir eine Umgebungsvariable in Windows setzt (z.B.: Variable TEST mit WERT ABCD).
MfGAuf die Gefahr hin, den Voschlag, 'putenv' zu verwenden, irgendwie übersehen zu haben, mache ich hiermit trotzdem auf die erwähnte Funktion aufmerksam: