共用方式為


_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。如需詳細資訊,請參閱平台叫用範例

請參閱

參考

處理程序和環境控制

getenv _wgetenv

_searchenv _wsearchenv