_putenv_s
、 _wputenv_s
、 _tputenv_s
環境変数を作成、変更、または削除します。 これらの関数は、CRT のセキュリティ機能で説明されているように、セキュリティが強化された_putenv
_wputenv
のバージョンです。
重要
この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。
_tputenv_s
については、Generic-text 関数のマッピングを参照してください。
構文
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 |
任意 | EINVAL |
任意 | NULL |
EINVAL |
エラー状態のいずれかが発生した場合、これらの関数は、 パラメーター検証で説明されているように、無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、これらの関数は EINVAL
を返し、errno
を EINVAL
に設定します。
解説
_putenv_s
の関数は、新しい環境変数を追加したり、既存の環境変数の値を変更したりします。 環境変数は、プロセス (たとえば、プログラムにリンクされるライブラリの既定の検索パス) が実行される環境を定義します。 _wputenv_s
関数は、 _putenv_s
関数のワイド文字バージョンです。 envstring
関数の引数 _wputenv_s
は、ワイド文字列です。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト関数マッピング
tchar.h
列の関数は、コンパイル時に定義されている文字セットに応じて、他の列の関数にマップされます。
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
」を参照してください。