SysUtils.GetEnvironmentVariableを呼び出すと、環境変数の値を取得することができます。
引数と返値にUnicodeStringが使えるので、Win32APIのGetEnvironmentVariable関数よりも使いやすいです。
#include <tchar.h>
#include <iostream>
#include <locale>
#include <boost/array.hpp>
#include <boost/foreach.hpp>
int _tmain(int argc, _TCHAR* argv[])
{
std::locale::global(std::locale("japanese"));
//環境変数
boost::array<UnicodeString, 15> names = {
"ALLUSERSPROFILE", //一般的なユーザー プロファイル
"APPDATA", //アプリケーションデータフォルダのパス
"CLIENTNAME", //クライアント マシンの名前
"COMMONPROGRAMFILES", //共通のプログラムファイルフォルダのパス
"COMSPEC", //cmd.exe プログラムのパス
"HOMEDRIVE", //現在のホーム ドライブ指定(たとえば 'C:' など)
"HOMEPATH", //現在のドキュメント格納場所のパス
"NUMBER_OF_PROCESSORS", //現在のマシンに搭載されているプロセッサの数
"OS", //OS
"PROCESSOR_ARCHITECTURE", //CPU アーキテクチャのタイプ。たとえば、Intel Pentium プロセッサの場合は X86。
"PROCESSOR_LEVEL", //CPU アーキテクチャの詳細説明
"TEMP", //一時ファイル フォルダのパス
"USERNAME", //現在のユーザーの名前
"USERPROFILE", //現在のユーザーの情報が格納されているフォルダのパス
"WINDIR", //Windows フォルダのパス
};
BOOST_FOREACH(UnicodeString name, names)
{
UnicodeString value = GetEnvironmentVariable(name);
std::wcout << name.c_str() << "=" << value.c_str() << std::endl;
}
return 0;
}
実行結果
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\yamamoto\Application Data
CLIENTNAME=Console
COMMONPROGRAMFILES=C:\Program Files\Common Files
COMSPEC=C:\WINDOWS\system32\cmd.exe
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\yamamoto
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_LEVEL=15
TEMP=C:\DOCUME~1\yamamoto\LOCALS~1\Temp
USERNAME=yamamoto
USERPROFILE=C:\Documents and Settings\yamamoto
WINDIR=C:\WINDOWS