我使用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