getenv, _wgetenv

Ruft einen Wert aus der aktuellen Umgebung ab.Sicherere Versionen dieser Funktionen sind verfügbar; finden Sie unter getenv_s, _wgetenv_s.

Wichtiger HinweisWichtig

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

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

Parameter

  • varname
    Umgebungsvariablenname.

Rückgabewert

Gibt einen Zeiger auf Umgebungstabelleneintrag zurück, der varname enthält.Es ist nicht sicher, den Wert der Umgebungsvariablen mithilfe des zurückgegebenen Zeiger zu ändern.Verwenden Sie die _putenv-Funktion, 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 der Umgebungsvariablen für varname.getenv ist nicht im Windows-Betriebssystem die Groß-/Kleinschreibung beachtet.getenv und _putenv verwenden die Kopie der Umgebung, die durch die globale Variable _environ dargestellt werden, um auf die Umgebung auf.getenv kann nur für den Datenstrukturen, die der Laufzeitbibliothek zugegriffen werden kann und nicht auf der Umgebung "das Segment", das für den Prozess durch das Betriebssystem erstellt wird.Daher rufen möglicherweise Programme, die das envp-Argument zu Haupt- oder zu wmain verwenden, ungültige Informationen ab.

Wenn varnameNULL ist, Aufrufe dieser Funktion ein ungültiger Parameterhandler, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, gibt Sätze errno dieser Funktion zu EINVAL und NULL zurück.

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

In einem MBCS-Programm (beispielsweise, in einem SBCS-ASCII-Programm), ist _wenviron zuerst NULL, da die Umgebung von Mehrbyte-Zeichenfolgen besteht.Anschließend beim ersten Aufruf von _wputenv oder beim ersten Aufruf von _wgetenv, wenn eine Umgebung (MBCS) bereits vorhanden ist, wird eine entsprechende Breitzeichen-Umgebung erstellt und wird anschließend durch _wenviron gezeigt.

Entsprechend in einem Programm von Unicode (_wmain), ist _environ zuerst NULL, da die Umgebung aus Zeichenfolgen mit Breitzeichen besteht.Anschließend beim ersten Aufruf von _putenv oder beim ersten Aufruf von getenv, wenn Umgebung ein (Unicode) bereits vorhanden ist, wird eine entsprechende MBCS-Umgebung erstellt und wird anschließend durch _environ gezeigt.

Wenn zwei Kopien der Umgebung (MBCS und Unicode) gleichzeitig in einem Programm vorhanden sind, muss das Laufzeitsystem beide Kopien, Ergebnis der langsameren Ausführungszeit beibehalten.Beispielsweise wenn Sie _putenv aufrufen, wird ein Aufruf _wputenv auch automatisch ausgeführt, sodass die zwei Umgebungszeichenfolgen entsprechen.

WarnhinweisVorsicht

In seltenen Fällen wenn das Laufzeitsystem eine Unicode-Version und eine - Version der Umgebung verwaltet werden, entsprechen diese Versionen möglicherweise mit zwei Umgebungen nicht genau.Dies liegt daran, dass, obwohl keine eindeutigen Mehrbyte-Zeichenfolgen-Zuordnungen zu einer eindeutigen Unicode-Zeichenfolge, die Zuordnung von einer eindeutigen Unicode-Zeichenfolge in einer Mehrbyte-Zeichenfolge nicht unbedingt eindeutig ist.Weitere Informationen finden Sie unter _environ, _wenviron.

HinweisHinweis

Die _putenv und _getenv Familien von Funktionen sind nicht threadsicher._getenv konnte einen Zeichenfolgenzeiger zurückgeben, während _putenv die Zeichenfolge geändert und Zufallsausfälle verursachen.Überprüfen Sie, ob Aufrufe dieser Funktionen synchronisiert werden.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tgetenv

getenv

getenv

_wgetenv

So legen Sie den Wert der TZ Umgebungsvariable, Verwendung getenv, des _putenv und des _tzset nach Bedarf überprüfen oder ändern.Weitere Informationen zu TZ, finden Sie unter _tzset und _daylight, Zeitzone und _tzname.

Anforderungen

Routine

Erforderlicher Header

getenv

<stdlib.h>

_wgetenv

<stdlib.h> oder <wchar.h>

So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

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 Umgebungssteuerelement

_putenv, _wputenv

umgebungsbedingten Konstanten