_putenv_s
, _wputenv_s
_tputenv_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).
Weitere _tputenv_s
Informationen finden Sie unter Generische Funktionszuordnungen.
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 |
any | EINVAL |
any | 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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Zuordnungen generischer Textfunktionen
Die Funktion in der tchar.h
Spalte ist der Funktion in den anderen Spalten abhängig von dem Zeichensatz zugeordnet, der zur Kompilierungszeit definiert ist.
tchar.h -Funktion |
_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_s
finden Sie unter , siehe getenv_s
, _wgetenv_s
.
Siehe auch
Prozess- und Umgebungskontrolle
getenv
, _wgetenv
_searchenv
, _wsearchenv