Win32 関数 GetEnvironmentVariable を使用して、作成したばかりの変数の値を取得しています。Windows XP と VC++ 2005 を実行しています。Visual Studio 内からプログラムを実行すると、新しい変数が見つかりません。コマンドプロンプトから実行すると、実行されます。VC++ を再起動しましたが、結果は同じでした。Visual Studio のすべてのインスタンスを再起動しましたが、それでも同じ問題が発生します。PCを再起動すれば解決するかもしれませんが、どうしてこうなったのか気になります。私が使用しているコードは次のとおりです。
#define BUFSIZE 4096
#define VARNAME TEXT("MY_ENV_NAME")
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR chNewEnv[BUFSIZE];
DWORD dwEnv = ::GetEnvironmentVariable(VARNAME, chNewEnv, BUFSIZE);
if (dwEnv == 0)
{
DWORD dwErr = GetLastError();
if(dwErr == ERROR_ENVVAR_NOT_FOUND)
{
printf("Environment variable does not exist.\n");
return -1;
}
}
else
{
printf(chNewEnv);
}
return 0;
}
MY_ENV_NAME を TEMP などの存在する必要があるものに置き換えると、期待どおりに機能します。何か案は?ありがとう。