共用方式為


_putenv_s、_wputenv_s

建立、修改,或移除環境變數。 這些是 _putenv、_wputenv 的安全性增強版本,如 CRT 中的安全性功能中所述。

重要

這個應用程式開發介面不能用於 Windows 執行階段 中執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式

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的值,並因此使 main 的 envp 引數以及 wmain 的 _wenvp 引數無法使用。 因此,使用 _environ 或 _wenviron 存取環境資訊比較安全。 如需 _putenv_s 和 _wputenv_s 與全域變數的關係,請參閱 _environ、_wenviron

注意事項注意事項

_putenv_s_getenv_s 函式群不是安全執行緒。當 _putenv_s 修改字串時產生隨機失敗,_getenv_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