_putenv_s, _wputenv_s

環境変数を作成、変更、または削除します。 これらの関数は、CRT_putenv_wputenvセキュリティ機能の説明に従って、セキュリティが強化されたバージョンのバージョンです。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

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

パラメーター

varname
環境変数名。

value_string
環境変数に設定する値。

戻り値

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。

エラー条件

varname value_string 戻り値
NULL any EINVAL
any NULL EINVAL

エラー状態のいずれかが発生した場合、「パラメーターの検証」で説明されているように、これらの関数は無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、これらの関数は EINVAL を返し、errnoEINVAL に設定します。

解説

_putenv_s の関数は、新しい環境変数を追加したり、既存の環境変数の値を変更したりします。 環境変数は、プロセス (たとえば、プログラムにリンクされるライブラリの既定の検索パス) が実行される環境を定義します。 _wputenv_s 関数は、 _putenv_s関数のワイド文字バージョンです。 envstring 関数の引数 _wputenv_s は、ワイド文字列です。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチンのマップ

TCHAR.H ルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tputenv_s _putenv_s _putenv_s _wputenv_s

varname は、追加または変更する環境変数の名前で、value_string はその変数の値です。 varname が既に環境の一部である場合、値が value_string に置き換えられます。そうでない場合は、新しい varname 変数とその value_string が環境に追加されます。 空の文字列 (つまり "") を value_string に指定すると、環境から変数を削除できます。

_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」をご覧ください。

Note

_putenv_s 系関数と _getenv_s 系関数はスレッド セーフではありません。 _putenv_s が文字列を変更している間に _getenv_s が文字列ポインターを返すことがあり、これはランダム エラーの原因になります。 これらの関数の呼び出しが同期されていることを確認する必要があります。

必要条件

ルーチンによって返される値 必須ヘッダー
_putenv_s <stdlib.h>
_wputenv_s <stdlib.h> または <wchar.h>

互換性の詳細については、「 Compatibility」を参照してください。

_putenv_s の使用方法を示すサンプルについては、「getenv_s_wgetenv_s」を参照してください。

関連項目

プロセスと環境の制御
getenv, _wgetenv
_searchenv, _wsearchenv