Share via


getenv, _wgetenv

Ruft einen Wert aus der aktuellen Umgebung ab. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter getenv_s, _wgetenv_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.

char *getenv( 
   const char *varname 
);
wchar_t *_wgetenv( 
   const wchar_t *varname 
);

Parameter

  • varname
    Umgebungsvariablenname.

Rückgabewert

Gibt einen Zeiger auf den Umgebungstabelleneintrag zurück, der varname enthält. Es ist nicht sicher, der Wert der Umgebungsvariablen mit dem zurückgegebenen Zeiger zu ändern. Verwenden Sie die Funktion _putenv, um den Wert einer Umgebungsvariablen zu ändern. Der Rückgabewert ist NULL, wenn varname nicht in der Umgebungstabelle gefunden wird.

Hinweise

Die getenv-Funktion sucht die Liste von Umgebungsvariablen für varname. Für getenv wird im Windows-Betriebssystem die Groß-/Kleinschreibung nicht beachtet. getenv und _putenv verwenden die Kopie der Umgebung, auf die die globale Variable _environ verweist, um auf die Umgebung zuzugreifen. getenv arbeitet nur auf den Datenstrukturen, auf die die Laufzeitbibliothek zugreifen kann, und nicht auf dem Umgebungssegment, das vom Betriebssystem für den Prozess erstellt wurde. Programme, die das Argument envp für main oder wmain verwenden, rufen daher möglicherweise ungültige Informationen ab.

Wenn varname den Wert NULL aufweist, ruft diese Funktion einen Handler für ungültige Parameter auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, legt diese Funktion errno auf EINVAL fest und gibt NULL zurück.

_wgetenv ist eine Breitzeichenversion von getenv. Das Argument und der Rückgabewert von _wgetenv sind Zeichenfolgen mit Breitzeichen. Die globale _wenviron-Variable ist eine Breitzeichen-Version von _environ.

In einem MBCS-Programm (z. B. in einem SBCS-ASCII-Programm), ist _wenviron zunächst NULL, da die Umgebung aus den Multibyte-Zeichenfolgen besteht. Beim ersten Aufruf von _wputenv oder beim ersten Aufruf von _wgetenv (sofern bereits eine (MBCS)-Umgebung vorhanden ist), wird dann eine entsprechende Breitzeichenumgebung erstellt, auf die dann _wenviron verweist.

In einem Unicodeprogramm (_wmain) ist _environ dementsprechend NULL, da die Umgebung aus Zeichenfolgen mit Breitzeichen besteht. Beim ersten Aufruf von _putenv oder beim ersten Aufruf von getenv (sofern bereits eine (Unicode)-Umgebung vorhanden ist), wird dann eine entsprechende MBCS-Umgebung erstellt, auf die dann _environ verweist.

Wenn in einem Programm zwei Kopien der Umgebung (MBCS und Unicode) gleichzeitig vorhanden sind, muss das Laufzeitsystem beide Kopien verwalten, wodurch sich die Ausführungszeit verlangsamt. Beispielsweise erfolgt bei jedem Aufruf von _putenv automatisch auch ein Aufruf von _wputenv, damit die beiden Umgebungszeichenfolgen übereinstimmen.

Warnung

In seltenen Fällen, wenn das Laufzeitsystem sowohl eine Unicodeversion als auch eine Multibyteversion der Umgebung verwaltet, stimmen diese zwei Versionen möglicherweise nicht exakt überein.Dies liegt daran, dass die Zuordnung von einer eindeutigen Unicodezeichenfolge zu einer Multibyte-Zeichenfolge nicht unbedingt eindeutig ist, obwohl sich jede eindeutige Multibyte-Zeichenfolge einer eindeutigen Unicodezeichenfolge zuordnen lässt.Weitere Informationen 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.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_tgetenv

getenv

getenv

_wgetenv

Um den Wert der Umgebungsvariablen TZ zu überprüfen oder zu ändern, verwenden Sie je nach Erfordernis getenv, _putenv und _tzset. Weitere Informationen zu TZ finden Sie unter _tzset und _daylight, _timezone und _tzname.

Anforderungen

Routine

Erforderlicher Header

getenv

<stdlib.h>

_wgetenv

<stdlib.h> oder <wchar.h>

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

Beispiel

// crt_getenv.c
// compile with: /W3
// This program uses getenv to retrieve
// the LIB environment variable and then uses
// _putenv to change it to a new value.
 
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *libvar;

   // Get the value of the LIB environment variable.
   libvar = getenv( "LIB" ); // C4996
   // Note: getenv is deprecated; consider using getenv_s instead

   if( libvar != NULL )
      printf( "Original LIB variable is: %s\n", libvar );

   // Attempt to change path. Note that this only affects the environment
   // variable of the current process. The command processor's
   // environment is not changed.
   _putenv( "LIB=c:\\mylib;c:\\yourlib" ); // C4996
   // Note: _putenv is deprecated; consider using putenv_s instead

   // Get new value.
   libvar = getenv( "LIB" ); // C4996

   if( libvar != NULL )
      printf( "New LIB variable is: %s\n", libvar );
}
  

.NET Framework-Entsprechung

System::Environment::GetEnvironmentVariable

Siehe auch

Referenz

Prozess- und Umgebungssteuerung

_putenv, _wputenv

Umgebungskonstanten