Condividi tramite


_putenv_s, _wputenv_s

Creazione, modifica, o rimozione delle variabili di ambiente. Queste sono versioni di _putenv, _wputenv ma con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

Importante

Questa API non può essere utilizzata nelle applicazioni eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW.

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

Parametri

  • name
    Il nome della variabile d'ambiente.

  • value
    Il valore da impostare nella variabile d'ambiente.

Valore restituito

Restituisce 0 se ha esito positivo, o un codice di errore.

Condizioni di errore

name

value

Valore restituito

NULL

any

EINVAL

any

NULL

EINVAL

Se una delle condizioni di errore si verifica, queste funzioni richiamano un gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EINVAL e impostano errno su EINVAL.

Note

La funzione _putenv_s aggiunte nuove variabili di ambiente o modifica i valori delle variabili di ambiente esistenti. Le variabili di ambiente definite nell'ambiente in cui un processo viene eseguito(ad esempio, il percorso di ricerca predefinito per le librerie per essere collegate con un programma). _wputenv_s è una versione a caratteri estesi di _putenv_s; l'argomento envstring in _wputenv_s è una stringa di caratteri estesi.

Mapping di routine di testo generico

Routine TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tputenv_s

_putenv_s

_putenv_s

_wputenv_s

name è il nome della variabile d'ambiente da aggiungere o modificare e value è il valore della variabile. Se name è già parte dell'ambiente, il valore viene sostituito da value; in caso contrario, la nuova variabile name e il relativo value vengono aggiunte all'ambiente. È possibile rimuovere una variabile d'ambiente specificando una stringa vuota ("") per value.

_putenv_s e _wputenv_s influiscono solo sull'ambiente che è locale al processo corrente; non è possibile utilizzarle per la modifica dell'ambiente a livello di comando. Queste funzioni sono disponibili solo nelle strutture dati accessibili dalla libreria di runtime e non nel "segmento" dell'ambiente creato per un processo dal sistema operativo . Quando il processo corrente termina, l'ambiente viene ripristinato al livello del processo chiamante. che nella maggior parte dei casi è il livello del sistema operativo. Tuttavia, l'ambiente modificato può essere passato a tutti i nuovi processi creati da _spawn, _exec oppure da system e i nuovi processi ottengono i nuovi elementi aggiunti da _putenv_s e _wputenv_s.

Non modificare direttamente una voce dell'ambiente; in alternativa, utilizzare _putenv_s oppure _wputenv_s per modificarla. In particolare, gli elementi direttamente liberati della matrice globale _environ[] potrebbero portare ad un indirizzamento di memoria non valido.

getenv e _putenv_s utilizzano la variabile globale _environ per accedere alla tabella dell'ambiente; _wgetenv e _wputenv_s utilizzano _wenviron. _putenv_s e _wputenv_s possono modificare il valore di _environ e di _wenviron e pertanto invalidano l'argomento di envp a main e l'oggetto di _wenvp a wmain. Di conseguenza, è consigliabile utilizzare _environ o _wenviron per accedere alle informazioni dell'ambiente. Per ulteriori informazioni sulla relazione tra _putenv_s e _wputenv_s alle variabili globali, vedere _environ, _wenviron.

Nota

Le famiglie di funzioni _getenv_s e _putenv_s non sono thread-safe._getenv_s potrebbe restituire un puntatore di stringa mentre _putenv_s sta modificando la stringa, causando errori casuali.Assicurarsi che le chiamate alle funzioni siano sincronizzate.

Requisiti

Routine

Intestazione obbligatoria

_putenv_s

<stdlib.h>

_wputenv_s

<stdlib.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

Esempio

Per un esempio che illustra come utilizzare _putenv_s, vedere getenv_s, _wgetenv_s.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di platform invoke.

Vedere anche

Riferimenti

Controllo processo e ambiente

getenv, _wgetenv

_searchenv, _wsearchenv