_putenv_s, _wputenv_s

Erstellt, ändert oder entfernt Umgebungsvariablen. Diese Funktionen sind Versionen von _putenv, _wputenv die Sicherheitsverbesserungen aufweisen, wie in den Sicherheitsfeatures im CRT beschrieben.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

errno_t _putenv_s(
   const char *varname,
   const char *value_string
);
errno_t _wputenv_s(
   const wchar_t *varname,
   const wchar_t *value_string
);

Parameter

varname
Der Umgebungsvariablenname.

value_string
Der Wert, auf den die Umgebungsvariable festgelegt wird.

Rückgabewert

Gibt 0 (null) zurück, wenn erfolgreich, oder einen Fehlercode.

Fehlerbedingungen

varname value_string Rückgabewert
NULL Beliebig EINVAL
Beliebig NULL EINVAL

Wenn eine der Fehlerbedingungen auftritt, rufen diese Funktionen einen ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EINVAL zurück und stellen errno auf EINVAL ein.

Hinweise

Die _putenv_s-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_s ist eine Breitzeichenversion von _putenv_s. Das envstring -Argument für _wputenv_s ist eine Breitzeichenfolge.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tputenv_s _putenv_s _putenv_s _wputenv_s

varname ist der Name der Umgebungsvariable,der hinzugefügt oder geändert werden soll, und value_string ist der Wert der Variablen. Wenn varname bereits Teil der Umgebung ist, wird sein Wert durch value_string ersetzt. Andernfalls werden die neue varname-Variable und ihr value_string-Wert zur Umgebung hinzugefügt. Sie können eine Variable aus der Umgebung entfernen, ""indem Sie eine leere Zeichenfolge (d. h. ) für value_string.

_putenv_s und _wputenv_s wirkt sich nur auf die Umgebung aus, die lokal für den aktuellen Prozess ist. Sie können sie nicht verwenden, um die Umgebung auf Befehlsebene zu ändern. Diese Funktionen funktionieren nur bei Datenstrukturen, 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_s und _wputenv_s hinzugefügt werden.

Ändern Sie einen Umgebungseintrag nicht direkt; Verwenden _putenv_s oder _wputenv_s ändern Sie sie stattdessen. Das direkte Loslösen von Elementen des globalen _environ[]-Arrays kann nämlich dazu führen, dass ein ungültiger Speicher adressiert wird.

getenv und _putenv_s verwenden die globale Variable _environ, um auf die Umgebungstabelle zuzugreifen; _wgetenv und _wputenv_s verwenden _wenviron. _putenv_s und _wputenv_s ä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. Daher ist es sicherer, die Umgebungsinformationen zu verwenden _environ oder _wenviron darauf zuzugreifen. Weitere Informationen zur Beziehung von _putenv_s und zu globalen Variablen finden Sie unter _environ, _wenviron_wputenv_s .

Hinweis

Die Familien _putenv_s und _getenv_s der Funktionen sind nicht threadsicher. _getenv_s gibt möglicherweise einen Zeichenfolgenzeiger zurück, während _putenv_s 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_s <stdlib.h>
_wputenv_s <stdlib.h> oder <wchar.h>

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

Beispiel

Ein Beispiel zur Verwendung _putenv_sfinden Sie unter , siehe getenv_s, _wgetenv_s.

Siehe auch

Prozess- und Umgebungskontrolle
getenv, _wgetenv
_searchenv, _wsearchenv