我使用Win32函數GetEnvironmentVariable來檢索剛創建的變量的值。我正在運行Windows XP和VC++ 2005.如果我從Visual Studio中運行程序,它無法找到新變量。如果我從命令提示符運行它,它會。我重新啓動了VC++,但結果相同。我甚至重新啓動了Visual Studio的所有實例,但仍然是同樣的問題。如果我重新啓動電腦,它可能會得到解決,但我很好奇爲什麼這樣。以下是我正在使用的代碼: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;
}
如果我將MY_ENV_NAME替換爲必須存在的內容(例如TEMP),它將按預期工作。有任何想法嗎?謝謝。
安德斯,我確實重新啓動了我的遊戲機以及Visual Studio – 2009-06-26 16:07:23
以及您從VisStudio開始的程序。應用程序在啓動時從其「父」繼承其環境,並且不會更改。啓動後,上下文中的環境變化X不會傳播到上下文Y. – 2009-06-26 16:27:10