_putenv_s、_wputenv_s_putenv_s, _wputenv_s

環境変数を作成、変更、または削除します。Creates, modifies, or removes environment variables. これらのバージョンの _putenv、_wputenv は、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンです。These are versions of _putenv, _wputenv but have security enhancements, as described in Security Features in the CRT.

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。This API cannot be used in applications that execute in the Windows Runtime. 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。For more information, see CRT functions not supported in Universal Windows Platform apps.

構文Syntax

errno_t _putenv_s(
   const char *varname,
   const char *value_string
);
errno_t _wputenv_s(
   const wchar_t *varname,
   const wchar_t *value_string
);

パラメーターParameters

varnamevarname
環境変数名。The environment variable name.

value_stringvalue_string
環境変数に設定する値。The value to set the environment variable to.

戻り値Return Value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Returns 0 if successful, or an error code.

エラー条件Error Conditions

varnamevarname value_stringvalue_string 戻り値Return value
NULLNULL 任意any EINVALEINVAL
任意any NULLNULL EINVALEINVAL

いずれかのエラー条件が発生すると、これら関数は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーを呼び出します。If one of the error conditions occurs, these functions invoke an invalid parameter handler, as described in Parameter Validation. これらの関数を返すかどうかは、引き続き実行が許可された、 EINVAL設定とerrnoEINVALします。If execution is allowed to continue, these functions return EINVAL and set errno to EINVAL.

RemarksRemarks

_Putenv_s関数は、新しい環境変数を追加します。 または、既存の環境変数の値を変更します。The _putenv_s function adds new environment variables or modifies the values of existing environment variables. 環境変数は、プロセス (たとえば、プログラムにリンクされるライブラリの既定の検索パス) が実行される環境を定義します。Environment variables define the environment in which a process executes (for example, the default search path for libraries to be linked with a program). _wputenv_sのワイド文字バージョンです _putenv_senvstring引数 _wputenv_sはワイド文字列です。_wputenv_s is a wide-character version of _putenv_s; the envstring argument to _wputenv_s is a wide-character string.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tputenv_s_tputenv_s _putenv_s_putenv_s _putenv_s_putenv_s _wputenv_s_wputenv_s

varnameを追加または変更する環境変数の名前を指定し、 value_stringは変数の値です。varname is the name of the environment variable to be added or modified and value_string is the variable's value. 場合varname 、環境の一部では既にその値が置き換えvalue_stringそうしないと、新しいvarname変数とそのvalue_string。 環境に追加されます。If varname is already part of the environment, its value is replaced by value_string; otherwise, the new varname variable and its value_string are added to the environment. 空の文字列を指定することで、環境から変数を削除できます (つまり、"") のvalue_stringします。You can remove a variable from the environment by specifying an empty string (that is, "") for value_string.

_putenv_s_wputenv_s現在のプロセスに対してローカルの環境のみに影響は、それらを使用して、コマンド レベルの環境を変更することはできません。_putenv_s and _wputenv_s affect only the environment that is local to the current process; you cannot use them to modify the command-level environment. これらの関数は、ランタイム ライブラリからアクセスできるデータ構造体でのみ動作し、プロセス用にオペレーティング システムが作成する環境 "セグメント" では動作しません。These functions operate only on data structures that are accessible to the run-time library and not on the environment "segment" that the operating system creates for a process. 現在のプロセスが終了すると、環境は、呼び出し元プロセスのレベルに戻ります。これはほとんどの場合、オペレーティング システムのレベルです。When the current process terminates, the environment reverts to the level of the calling process, which in most cases is the operating-system level. ただし、によって作成された新しいプロセスに変更された環境を渡すことができます _spawn_exec、またはシステム、し、これらの新しいプロセスである新しい項目を取得します。によって追加された _putenv_s_wputenv_sします。However, the modified environment can be passed to any new processes that are created by _spawn, _exec, or system, and these new processes get any new items that are added by _putenv_s and _wputenv_s.

環境のエントリを直接変更しないでください。代わりに、 _putenv_sまたは _wputenv_sを変更します。Do not change an environment entry directly; instead, use _putenv_s or _wputenv_s to change it. 要素を具体的には、直接解放、 _environ:operator[] グローバル配列に対応する無効なメモリが発生する可能性があります。In particular, directly freeing elements of the _environ[] global array might cause invalid memory to be addressed.

getenv_putenv_sグローバル変数を使用して _environ ; して環境テーブルにアクセスするには _wgetenv_wputenv_s使用 _wenvironします。getenv and _putenv_s use the global variable _environ to access the environment table; _wgetenv and _wputenv_s use _wenviron. _putenv_s_wputenv_sの値を変更することがあります _environ_wenviron、それによってが無効になると、 envp引数メイン_wenvp引数wmainします。_putenv_s and _wputenv_s may change the value of _environ and _wenviron, and thereby invalidate the envp argument to main and the _wenvp argument to wmain. そのため、使用しても安全は _environまたは _wenviron環境情報にアクセスします。Therefore, it is safer to use _environ or _wenviron to access the environment information. 関係の詳細については _putenv_s_wputenv_sグローバル変数を参照してください。 _environ、_wenvironします。For more information about the relationship of _putenv_s and _wputenv_s to global variables, see _environ, _wenviron.

注意

_Putenv_s_getenv_s系関数はスレッド セーフではされません。The _putenv_s and _getenv_s families of functions are not thread-safe. _getenv_s中に文字列ポインターを返すことができます _putenv_sは、文字列を変更し、ランダムにエラーの原因になります。_getenv_s could return a string pointer while _putenv_s is modifying the string, and thereby cause random failures. これらの関数の呼び出しが同期されていることを確認する必要があります。Make sure that calls to these functions are synchronized.

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_putenv_s_putenv_s <stdlib.h><stdlib.h>
_wputenv_s_wputenv_s <stdlib.h> または <wchar.h><stdlib.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

使用する方法を示すサンプル _putenv_sを参照してくださいgetenv_s、_wgetenv_sします。For a sample that shows how to use _putenv_s, see getenv_s, _wgetenv_s.

関連項目See also

プロセス制御と環境制御Process and Environment Control
getenv、 _wgetenvgetenv, _wgetenv
_searchenv、_wsearchenv_searchenv, _wsearchenv