_putenv, _wputenv

建立、修改或移除環境變數。 這些函式有更安全的版本可供使用;請參閱 _putenv_s_wputenv_s

重要

這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。

語法

int _putenv(
   const char *envstring
);
int _wputenv(
   const wchar_t *envstring
);

參數

envstring
環境字串定義。

傳回值

如果成功,函式會傳回 0,如果發生錯誤則傳回 -1。

備註

_putenv 函式會加入新的環境變數,或修改現有環境變數的值。 環境變數會定義處理序所執行的環境 (例如,要與程式連結之程式庫的預設搜尋路徑)。 _wputenv 是寬字元版本的 _putenvenvstring_wputenv 引數是寬字元字串。

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

泛型文字常式對應

Tchar.h 常規 _UNICODE and _MBCS 未定義 _MBCS 定義 _UNICODE 定義
_tputenv _putenv _putenv _wputenv

envstring 引數必須是 varname=value_string 格式的字串指標,其中 varname 是要新增或修改之環境變數的名稱,而 value_string 是變數的值。 如果 varname 已是環境的一部分,則其值會取代為 value_string;否則會新增 varname 變數及其 value_string 值至環境。 您可以藉由只指定 varname =,藉由指定空白 value_string ,或換句話說,從環境中移除變數。

_putenv_wputenv 只會影響目前進程本機的環境;您無法使用它們來修改命令層級環境。 也就是說,這些函式只會在執行時間程式庫可存取的資料結構上運作。 它們不會在作業系統為進程建立的環境區段上運作。 目前處理序終止時,環境會還原為呼叫處理序層級 (在大部分情況下是作業系統層級)。 不過,修改過的環境可以傳遞至 _spawn_execsystem 所建立的任何新處理序,而這些新的處理序會取得 _putenv_wputenv 所新增的任何項目。

請勿直接變更環境專案:請改用 _putenv_wputenv 加以變更。 特別的是,直接釋出 _environ[] 全域陣列的元素可能會造成需要處理的無效記憶體。

_getenv_putenv 使用全域變數 _environ 來存取環境資料表;_wgetenv_wputenv 使用 _wenviron_putenv_wputenv 可能會變更 和 _wenviron 的值 _environ ,因此使 引數失效, _wenvp 並將 引數 main 失效 _envpwmain 因此,使用 _environ_wenviron 存取環境資訊更安全。 如需 和 與全域變數關聯 _putenv 的詳細資訊,請參閱 _environ_wenviron_wputenv

注意

_putenv_getenv 系列的函式不是安全執行緒。 _putenv 正在修改字串時,_getenv 可能會傳回字串指標,因而導致隨機失敗。 確定這些函式的呼叫已同步。

需求

常式 必要的標頭
_putenv <stdlib.h>
_wputenv <stdlib.h><wchar.h>

如需相容性詳細資訊,請參閱相容性

範例

如需如何使用 _putenv 的範例,請參閱 getenv_wgetenv

另請參閱

進程和環境控制
getenv, _wgetenv
_searchenv, _wsearchenv