_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.