_putenv_s、_wputenv_s
環境変数を作成、変更、または削除できます。これらは _putenv、_wputenv のバージョンでは、CRT のセキュリティ機能に説明されているように、のセキュリティが強化があります。
重要 |
---|
この API は 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 |
任意 |
EINVAL |
任意 |
NULL |
EINVAL |
エラー状態の 1 つが発生した場合、これらの関数は パラメーターの検証に説明されているように、無効なパラメーター ハンドラーが実行されます。実行の継続が許可された場合、これらの関数は 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 は、現在のプロセスに対してローカルである環境にのみ影響します; コマンド レベルの環境を変更するために使用できません。これらの関数は、ランタイム ライブラリから、つまりオペレーティング システムがプロセス用に作成した環境 "segment" でアクセスできるデータ構造体でのみ動作します。現在のプロセスが終了すると、環境は、ほとんどの場合、オペレーティング システムのレベルにある呼び出し元プロセスのレベルに戻ります。ただし、変更された環境は _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 系関数はスレッド セーフではありません。_getenv_s は _putenv_s が文字列を変更している間、およびそれにより原因で失敗しだいを格納する文字列を返すポインター。これらの関数の呼び出しが同期されていることを確認する必要があります。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_putenv_s |
<stdlib.h> |
_wputenv_s |
<stdlib.h> または <wchar.h> |
追加の互換性の詳細については、互換性を参照してください。
使用例
_putenv_sを使用する方法について getenv_s、_wgetenv_sを示すサンプルについて。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。