我正在使用 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;
}
如果我用必须存在的东西(例如 TEMP)替换 MY_ENV_NAME,它会按预期工作。有任何想法吗?谢谢。