Share via


_putenv_s, _wputenv_s

Crée, modifie ou supprime, les variables d'environnement. Il s'agit de versions de _putenv, _wputenv avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

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.

errno_t _putenv_s(
   const char *name,
   const char *value 
);
errno_t _wputenv_s(
   const wchar_t *name,
   const wchar_t *value
);

Paramètres

  • name
    Le nom d'une variable d'environnement.

  • value
    La valeur à laquelle affecter la variable d'environnement.

Valeur de retour

Retourne 0 en cas de réussite, ou un code d'erreur.

Conditions d'erreur

name

value

Valeur de retour

NULL

any

EINVAL

any

NULL

EINVAL

Si l'une des conditions d'erreur se produit, elles appellent un gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL et définissent errno avec la valeur EINVAL.

Notes

La fonction _putenv_s ajoute de nouvelles variables d'environnement ou modifie les valeurs des variables d'environnement existantes. Les variables d'environnement définissent l'environnement dans lequel un processus s'exécute (par exemple, le chemin de recherche par défaut pour relier les bibliothèques à un programme). _wputenv_s est une version à caractères larges de _putenv_s; l'argument envstring vers _wputenv_s est une chaîne à caractères larges.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_tputenv_s

_putenv_s

_putenv_s

_wputenv_s

name est le nom de la variable d'environnement à ajouter ou modifier et value est la valeur de la variable. Si name fait déjà partie de l'environnement, sa valeur est remplacée par value; sinon, la nouvelle variable name et sa value sont ajoutées à l'environnement. Vous pouvez supprimer une variable de l'environnement en spécifiant une chaîne vide (autrement dit, "") pour value.

_putenv_s et _wputenv_s affectent uniquement l'environnement qui est local au processus actuel ; vous ne pouvez pas les utiliser pour modifier l'environnement de commande niveau. Ces fonctions fonctionnent uniquement sur les structures de données accessibles à la bibliothèque Runtime et non dans le "segment" d'environnement créé pour un processus par le système d'exploitation. Lorsque le processus actuel se termine, l'environnement revient au niveau du processus appelant, dans la plupart des cas, le niveau du système d'exploitation. Toutefois, l'environnement modifié peut être passé à tous les nouveaux processus créés par _spawn, _exec, ou system, et ces nouveaux processus obtiennent tous les nouveaux éléments ajoutés par _putenv_s et _wputenv_s.

Ne modifiez pas une entrée d'environnement directement : à la place, utilisez _putenv_s ou _wputenv_s pour le modifier. En particulier, la libération directe d'éléments du tableau global _environ[] pourrait mener au remplissage d'une mémoire non valide.

getenv et _putenv_s utilisent la variable globale _environ pour accéder à la table d'environnement ; _wgetenv et _wputenv_s utilisent _wenviron. _putenv_s et _wputenv_s peuvent modifier la valeur de_environ et de_wenviron, et rendent ainsi l'argument envp invalide à main et l'argument _wenvp à wmain. Par conséquent, il est préférable d'utiliser _environ ou _wenviron pour accéder aux informations d'environnement. Pour plus d'informations sur la relation de_putenv_s et de_wputenv_s avec les variables globales, consultez _environ, _wenviron.

Notes

Les familles de fonctions _putenv_s et _getenv_s ne sont pas sécurisées du point de vue du thread._getenv_s peut retourner un pointeur de chaîne alors que _putenv_s modifie la chaîne, provoquant des défaillances aléatoires.Assurez-vous que les appels à ces fonctions sont synchronisés.

Configuration requise

Routine

En-tête requis

_putenv_s

<stdlib.h>

_wputenv_s

<stdlib.h> ou <wchar.h>

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

Exemple

Pour obtenir un exemple qui indique comment utiliser _putenv_s, consultez getenv_s, _wgetenv_s.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de code non managé.

Voir aussi

Référence

Contrôle de processus et d'environnement

getenv, _wgetenv

_searchenv, _wsearchenv