_putenv_s _wputenv_s
建立、修改,或移除環境變數。 這些是 _putenv _wputenv 版本,但是有安全性增強,如 安全性功能,則在 CRT 中中所述。
重要
這個應用程式開發介面無法用來在 Windows 執行階段中執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
errno_t _putenv_s(
const char *name,
const char *value
);
errno_t _wputenv_s(
const wchar_t *name,
const wchar_t *value
);
參數
name
環境變數名稱。value
設定環境變數的值。
傳回值
傳回 0,如果成功或錯誤碼。
錯誤情況
name |
value |
傳回值 |
---|---|---|
NULL |
any |
EINVAL |
any |
NULL |
EINVAL |
如果其中一個錯誤狀況發生,這些函式叫用無效的參數處理常式,如 參數驗證中所述。 如果執行允許繼續執行,這些函式傳回 EINVAL 並將 errno 設為 EINVAL。
備註
_putenv_s 函式會將新的環境變數或修改現有的環境變數的值。 環境變數定義處理序執行的環境 (例如,使用程式可以將連結程式庫的預設搜尋路徑)。 _wputenv_s 是 _putenv_s 的寬字元版本。傳遞給 _wputenv_s 的參數 envstring 的寬字元字串。
泛用文字常式對應
TCHAR.H 常式 |
未定義 _UNICODE & _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tputenv_s |
_putenv_s |
_putenv_s |
_wputenv_s |
name 會將環境變數的名稱或修改和 value 是變數值。 如果 name 已經是環境的一部分,它的值是由 value取代;否則,新 name 變數和它的 value 加入至環境。 您可以從環境移除變數藉由指定空字串 ("") 的 value。
_putenv_s 和 _wputenv_s 會影響是在目前處理序的環境;您不能使用這些修改命令層級環境。 這些函式在能夠存取這個執行階段程式庫和不在環境「區段」作業系統為程序所建立的資料結構只能使用。 當目前的處理序結束時,將環境還原至呼叫程序的層級,在許多情況下是作業系統層級。 不過,修改過的環境可以傳遞給由 _spawn、 _exec或 system建立的所有新的處理序,然後,這些處理序取得由 _putenv_s 和 _wputenv_s加入的任何新項目。
請勿直接變更環境的項目;相反地,請使用 _putenv_s 或 _wputenv_s 變更它。 特別是,立即釋放 _environ[] 全域陣列的項目可能會造成無效的記憶體位址。
getenv 和 _putenv_s 使用這個全域變數 _environ 存取環境表; _wgetenv 和 _wputenv_s 使用 _wenviron。 _putenv_s 和 _wputenv_s 可能變更 _environ 和 _wenviron的值並因此無法使用 envp 引數為 main 和 _wenvp 引數為 wmain。 因此,使用 _environ 或 _wenviron 存取環境資訊比較安全。 如需 _putenv_s 和 _wputenv_s 關聯式全域變數,請參閱 _environ _wenviron。
注意事項 |
---|
_putenv_s 和 _getenv_s 函式家族不是安全執行緒。_getenv_s 可以傳回字串指標,當 _putenv_s 修改字串時因而導致隨機失敗。請確定這些函式的呼叫同步。 |
需求
程序 |
必要的標頭檔 |
---|---|
_putenv_s |
<stdlib.h> |
_wputenv_s |
<stdlib.h> 或 <wchar.h> |
如需其他相容性資訊,請參閱 相容性。
範例
如需示範如何使用 _putenv_s的範例,請參閱 getenv_s _wgetenv_s範例。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。