Udostępnij za pośrednictwem


getenv, _wgetenv

Pobiera wartość z bieżącego środowiska.Bardziej bezpieczne wersje tych funkcji są dostępne w getenv_s, _wgetenv_s.

Ważna uwagaWażne

Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /ZW.

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

Parametry

  • varname
    Nazwa zmiennej środowiskowej.

Wartość zwracana

Zwraca wskaźnik do środowiska tabeli Zapis zawierający varname.Nie jest bezpieczne, aby zmodyfikować wartość zmiennej środowiskowej przy użyciu zwrócony wskaźnik.Użycie _putenv funkcji, aby zmodyfikować wartość zmiennej środowiskowej.Wartość zwracana jest NULL Jeśli varname nie można odnaleźć w tabeli środowiska.

Uwagi

getenv funkcja przeszukuje listę zmiennych środowiskowych dla varname.getenv nie uwzględnia wielkości liter w systemie operacyjnym Windows.getenvi _putenv użyć kopii środowiska wskazywanego przez zmiennej globalnej _environ do dostępu do środowiska.getenvdziała tylko na dostęp do biblioteki wykonawczej struktury danych, a nie na środowisko "segment" dla procesu utworzonych przez system operacyjny.W związku z tym, programy używające envp argument główne lub WMA w systemie może pobrać nieprawidłowe informacje.

Jeśli varname jest NULL, ta funkcja wywołuje program obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, funkcja ta ustawia errno jako EINVAL i zwraca NULL.

_wgetenvjest to wersja szeroko charakter getenv; wartość argumentów i _wgetenv są ciągi znaków wide._wenviron zmienne globalne jest wersją szerokich znaków _environ.

W programie MBCS (na przykład w programie SBCS ASCII) _wenviron jest początkowo NULL ponieważ środowiska składa się z ciągów znaków wielobajtowych.Następnie na pierwsze wywołanie funkcji _wputenv, lub na pierwsze wywołanie funkcji _wgetenv Jeśli środowisku (MBCS) już istnieje, odpowiedniego środowiska wide znakowy ciąg jest tworzony i następnie jest wskazywana przez _wenviron.

Podobnie w Unicode (_wmain) program, _environ jest początkowo NULL ponieważ środowiska składa się z ciągów znaków wide.Następnie na pierwsze wywołanie funkcji _putenv, lub na pierwsze wywołanie funkcji getenv Jeśli już istnieje w środowisku (Unicode), odpowiednie środowisko MBCS jest tworzony i następnie jest wskazywana przez _environ.

Gdy w programie jednocześnie istnieją dwie kopie środowiska (MBCS Unicode), działającego systemu muszą utrzymywać obie kopie, skutkujące wolniejszy czas wykonania.Na przykład, gdy wywołanie _putenv, wywołanie _wputenv również jest wykonywany automatycznie, tak, aby odpowiadać ciągów środowiska dwa.

Informacje dotyczące przestrogiPrzestroga

W rzadkich przypadkach gdy system wykonawczy jest utrzymanie zarówno wersja Unicode, jak i wielobajtowych wersji środowiska, wersje te dwa środowiska mogą nie odpowiadać dokładnie.Dlatego, chociaż dowolny unikatowy ciąg znaków wielobajtowych mapowany na unikatowy ciąg Unicode, mapowanie z unikatowego ciągu Unicode na ciąg znaków wielobajtowych nie jest koniecznie unikatowy.Aby uzyskać więcej informacji, zobacz _environ, _wenviron.

[!UWAGA]

_putenv i _getenv rodziny funkcji nie są bezpieczne od wątków._getenv może zwracać wskaźnik ciągu podczas gdy _putenv modyfikuje ciąg, powodując błędy losowe.Upewnij się, że wywołania tych funkcji są synchronizowane.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tgetenv

getenv

getenv

_wgetenv

Aby sprawdzić lub zmienić wartość TZ użycie zmiennej, środowiska getenv, _putenv i _tzset w razie potrzeby.Aby uzyskać więcej informacji o TZ, zobacz _tzset i _daylight, strefa czasowa i _tzname.

Wymagania

Procedura

Wymagany nagłówek

getenv

<stdlib.h>

_wgetenv

<stdlib.h> lub <wchar.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność.

Przykład

// 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 );
}
  

Odpowiednik w programie .NET Framework

zmienna środowiskowa pobierania systemu

Zobacz też

Informacje

Procedury kontroli środowiska

_putenv, _wputenv

Stałe środowiska