次の方法で共有


DoEnvironmentSubstA 関数 (shellapi.h)

[この関数は下位互換性のためにのみ保持されます。 ExpandEnvironmentStrings を代わりに使用してください。]

1 つ以上の環境変数への参照を含む入力文字列を解析し、完全に展開された値に置き換えます。

構文

DWORD DoEnvironmentSubstA(
  [in, out] LPSTR pszSrc,
            UINT  cchSrc
);

パラメーター

[in, out] pszSrc

型: LPTSTR

次の形式の 1 つ以上の環境変数への参照を含む null で終わる文字列へのポインター。 大文字と小文字は無視されます。

%VariableName%

'%' 文字で囲まれていない文字列内の文字はすべて無視され、変更されずに返されます。 したがって、文字列に複数の環境変数が含まれている場合は、'%' 以外の任意の文字を区切り記号として使用できます (スペースを含むか、区切り記号を含まない)。

この関数が正常に返されると、各 %VariableName% は展開された値に置き換えられます。 置換規則は、コマンド インタープリターで使用されるものと同じです。 変数名がシステムで見つからない場合、%variableName% はエントリ時に送信されたとおりに残ります。

展開された文字列がバッファーに対して大きすぎるためにこの関数が失敗した場合、このバッファーの内容は変更されません。

cchSrc

型: UINT

pszSrcが指すバッファーのサイズ (文字単位)。 バッファーは、返される文字列を保持するのに十分な大きさである必要があることに注意してください。

戻り値

型: DWORD

展開された文字列がバッファーに収まる場合、TRUE が HIWORD で返され、新しい pszSrc の長さが LOWORD に返されます。

展開された文字列がバッファーに対して大きすぎる場合は、HIWORD FALSE が返され、LOWORD で cchSrc されます。

備考

パラメーターには、有効な非NULL 値が含まれている必要があります。 これらの値を検証する必要があります。 これを行わないと、予期しない結果が生じる可能性があります。

pszSrc で返される文字列は通常、入力文字列よりも長くなります。そのため、バッファーが拡張されたバージョンの文字列を保持するのに十分な大きさであることを確認してください。 ANSI 文字列の cchSrc バッファーの割り当てられたサイズは、Unicode 文字列のバッファーよりも 1 大きい必要があります。 ANSI 文字列を扱う場合は、バッファー サイズ 文字列の長さ + 終端の null 文字 + 1 の数式を使用して、最小正しいバッファー サイズを決定します。

環境変数はユーザーまたはアプリケーションによって追加できるため、完全な一覧はシステムに依存します。 次の環境変数は標準であり、対話型アプリケーションとサービスの両方で使用できます。

  • ALLUSERSPROFILE
  • APPDATA
  • COMPUTERNAME
  • LOCALAPPDATA
  • NUMBER_OF_PROCESSORS
  • OS
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER
  • PROCESSOR_LEVEL
  • PROCESSOR_REVISION
  • ProgramData
  • ProgramFiles
  • 公共
  • SystemDrive
  • SystemRoot
  • USERPROFILE
  • windir
以下は、対話型アプリケーションでのみ使用できます。
  • HOMEDRIVE
  • HOMEPATH
  • LOGONSERVER
  • USERDOMAIN
  • USERNAME
ファイル システム フォルダーに対応する環境変数は、同等 CSIDL にマップすることも、KNOWNFOLDERID 値 SHGetFolderLocation または SHGetKnownFolderPathして取得することもできます。 CSIDLs と KNOWNFOLDERID は、環境変数の名前よりも信頼性が高く、可能な限り使用する必要があります。

次のコンソール アプリケーションは、DoEnvironmentSubstWの使用方法を示しています。


#include "stdafx.h"
#include "windows.h"
#include "windef.h"
#include "shellapi.h"

int _tmain(int argc, _TCHAR* argv[])
{
	WCHAR szSrc[MAX_PATH] = L"%OS%;%HOMEPATH%";

	DWORD result = DoEnvironmentSubstW(szSrc, MAX_PATH);

	WORD success = HIWORD(result);
	WORD string_length = LOWORD(result);

	return 0;
}

手記

shellapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして DoEnvironmentSubst を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shellapi.h
ライブラリ Shell32.lib
DLL Shell32.dll (バージョン 4.0 以降)