Share via


_putenv, _wputenv

Erstellt, ändert oder entfernt Umgebungsvariablen. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _putenv_s, _wputenv_s.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.

int _putenv(
   const char *envstring 
);
int _wputenv(
   const wchar_t *envstring 
);

Parameter

  • envstring
    Definition der Umgebungszeichenfolge.

Rückgabewert

Gibt 0 bei Erfolg oder – 1 bei einem Fehler zurück.

Hinweise

Die _putenv-Funktion fügt neue Umgebungsvariablen hinzu oder ändert die Werte vorhandener Umgebungsvariablen. Umgebungsvariablen definieren die Umgebung, in der ein Prozess ausgeführt wird (beispielsweise der Standardsuchpfad für die mit einem Programm zu verknüpfenden Bibliotheken). _wputenv ist eine Breitzeichenversion von _putenv. Das envstring-Argument für _wputenv ist eine Breitzeichenfolge.

Zuordnung generischer Textroutinen

Tchar.h-Routine

_UNICODE und _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tputenv

_putenv

_putenv

_wputenv

Das envstring-Argument muss ein Zeiger auf eine Zeichenfolge der Form varname=string sein, wobei varname der Name der hinzuzufügenden oder zu ändernden Umgebungsvariablen ist und string der Wert der Variablen. Wenn varname bereits Teil der Umgebung ist, wird sein Wert durch stringersetzt. Andernfalls werden die neue varname-Variable und ihr string-Wert zur Umgebung hinzugefügt. Sie können eine Variable aus der Umgebung entfernen, indem Sie einen leeren string angeben, d. h., indem Sie nur varname= angeben.

_putenv und _wputenv wirken sich nur auf die Umgebung aus, die für den aktuellen Prozess lokal ist. Sie können sie nicht zum Ändern der Umgebung auf Befehlsebene verwenden. Das bedeutet, dass diese Funktionen nur bei Datenstrukturen funktionieren, auf die die Laufzeitbibliothek zugreifen kann, aber nicht bei dem Umgebungssegment, das vom Betriebssystem für einen Prozess erstellt wurde. Wenn der aktuelle Prozess beendet wird, wird die Umgebung auf die Ebene des aufrufenden Prozesses zurückgesetzt (in den meisten Fällen die Betriebssystemebene). Die geänderte Umgebung kann jedoch an alle neue Prozesse übergeben werden, die von _spawn, _exec oder system erstellt werden, und diese neuen Prozesse rufen alle neuen Elemente ab, die von _putenv und _wputenv hinzugefügt werden.

Ändern Sie keinen Umgebungseintrag direkt: Verwenden Sie stattdessen zum Ändern _putenv oder _wputenv. Das direkte Loslösen von Elementen des globalen _environ[]-Arrays kann nämlich dazu führen, dass ein ungültiger Speicher anvisiert wird.

getenv und _putenv verwenden die globale Variable _environ, um auf die Umgebungstabelle zuzugreifen; _wgetenv und _wputenv verwenden _wenviron. _putenv und _wputenv ändern möglicherweise den Wert von _environ und _wenviron, wodurch das _envp-Argument für main und das _wenvp-Argument für wmain ungültig werden. Es ist daher sicherer mit _environ oder _wenviron auf die Umgebungsinformationen zuzugreifen. Weitere Informationen über die Beziehung von _putenv und _wputenv mit globalen Variablen finden Sie unter _environ, _wenviron.

Hinweis

Die Familien _putenv und _getenv der Funktionen sind nicht threadsicher._getenv gibt möglicherweise einen Zeichenfolgenzeiger zurück, während _putenv die Zeichenfolge ändert, was zu zufälligen Fehlern führen kann.Stellen Sie sicher, dass Aufrufe dieser Funktionen synchronisiert sind.

Anforderungen

Routine

Erforderlicher Header

_putenv

<stdlib.h>

_wputenv

<stdlib.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Ein Beispiel für die Verwendung von _putenv finden Sie unter getenv, _wgetenv.

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Prozess- und Umgebungssteuerung

getenv, _wgetenv

_searchenv, _wsearchenv