私は作成したばかりの変数の値を取得するためにWin32関数GetEnvironmentVariableを使用しています。私はWindows XPとVC++ 2005を実行しています。Visual Studio内からプログラムを実行すると、新しい変数を見つけることができません。私がコマンドプロンプトから実行すると、それが実行されます。 VC++を再起動しましたが、同じ結果が出ました。私もVisual Studioのすべてのインスタンスを再起動しましたが、それと同じ問題です。私はPCを再起動すれば解決するかもしれませんが、なぜそうなのですか不思議です。ここで私が使用しているコードです:VC++はGetEnvironmentVariableを使用して新しく作成されたenv変数を検出しません。
#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;
}
私は、TEMPとして、存在しなければならない何かでMY_ENV_NAMEを交換した場合、予想通り、それは動作します。何か案は?ありがとう。
アンダーズ、私はコンソールと同様にビジュアルスタジオ –
を再起動しました。またVisStudioを使い始めたプログラムも再起動しました。アプリケーションは起動時に環境をその親から継承し、変更されません。起動後、コンテキストXの環境への変更はコンテキストYに伝播しません。 –
これは、特に "MyComputer-> Properties"で変更が行われたときに 'GetEnvironmentVariable()'の環境変数を更新する方法が全くないことを意味します - >環境変数 "? – JHowzer