getenv, _wgetenv

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Obtient une valeur à partir de l'environnement actuel. Des versions plus sécurisées de ces fonctions sont disponibles. consultez la page getenv_s, _wgetenv_s.

System_CAPS_ICON_important.jpg Important

Cette API ne peut pas être utilisée dans les applications qui s'exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge avec /ZW.

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

Paramètres

varname
Nom de la variable d'environnement.

Retourne un pointeur vers l’entrée de table environnement contenant varname. Il est déconseillé de modifier la valeur de la variable d’environnement à l’aide du pointeur retourné. Utilisez la fonction _putenv pour modifier la valeur d'une variable d'environnement. La valeur de retour est NULL si varname est introuvable dans la table d’environnement.

La fonction getenv recherche varname dans la liste des variables d'environnement. getenv ne respecte pas la casse dans le système d'exploitation Windows. getenvet _putenv utiliser la copie de l’environnement vers lequel pointé la variable globale _environ pour accéder à l’environnement. getenvfonctionne uniquement sur les structures de données accessibles à la bibliothèque d’exécution et non sur l’environnement « segment » est créé pour le processus par le système d’exploitation. Par conséquent, les programmes qui utilisent la envp l’argument de principal ou wmain peuvent récupérer des informations non valides.

Si varname est NULL, cette fonction appelle un gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction affecte la valeur errno à EINVAL et retourne NULL.

_wgetenv est une version à caractères larges de getenv ; l'argument et la valeur de retour de _wgetenv sont des chaînes à caractères larges. La variable globale _wenviron est une version à caractères larges de _environ.

Dans un programme MBCS (par exemple, un programme ASCII SBSC), la valeur initiale de _wenviron est NULL, car l'environnement se compose de chaînes de caractères multioctets. Puis, dans le premier appel à _wputenv, ou sur le premier appel à _wgetenv si un environnement (MBCS) existe déjà, un environnement de chaîne à caractères larges correspondant est créé et puis désigné par _wenviron.

De la même façon dans Unicode (_wmain) programme, _environ est initialement NULL étant donné que l’environnement est constitué de chaînes à caractères larges. Ensuite, au premier appel à _putenv ou getenv, s'il existe déjà un environnement (Unicode), un environnement MBCS correspondant est créé, puis désigné par _environ.

Quand deux copies de l'environnement (MBCS et Unicode) existent simultanément dans un programme, le système Runtime doit gérer les deux copies, ce qui entraîne des temps d'exécution plus lents. Par exemple, quand vous appelez _putenv, un appel à _wputenv est aussi exécuté automatiquement, de sorte que les deux chaînes d'environnement correspondent.

System_CAPS_ICON_caution.jpg Attention

Dans de rares cas, lorsque le système runtime consiste à maintenir une version Unicode et une version de l’environnement, multioctet ces versions des deux environnements peut ne pas correspondant exactement. En effet, même si une chaîne de caractères multioctets unique est mappée à une chaîne Unicode unique, le mappage d'une chaîne Unicode unique à une chaîne de caractères multioctets n'est pas nécessairement unique. Pour plus d’informations, consultez _environ, _wenviron.

System_CAPS_ICON_note.jpg Remarque

Les familles de fonctions _putenv et _getenv ne sont pas thread-safe. _getenvpeut retourner un pointeur de chaîne lors de la _putenv modifie la chaîne, à l’origine des défaillances aléatoires. Assurez-vous que les appels à ces fonctions sont synchronisés.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_tgetenvgetenvgetenv_wgetenv

Pour vérifier ou modifier la valeur de la TZ utilisation variable d’environnement getenv, _putenv et _tzset si nécessaire. Pour plus d’informations sur TZ, consultez _tzset et _daylight, fuseau horaire et _tzname.

RoutineEn-tête requis
getenv<stdlib.h>
_wgetenv<stdlib.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

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

Original LIB variable is: C:\progra~1\devstu~1\vc\lib  
New LIB variable is: c:\mylib;c:\yourlib  

System::Environment::GetEnvironmentVariable

Processus de contrôle et d’environnement
_putenv, _wputenv
Constantes d’environnement

Afficher: