【发布时间】:2012-06-22 16:03:33
【问题描述】:
我有一个 C++ 程序,它调用 GetEnvironmentVariable() 来获取“路径”变量信息。如果我正在运行我的程序,同时,我通过“MyComputer->Properties->Environment Variables”更改我的“路径”变量?...是否 100% 不可能检索 更新的“路径” ' 来自GetEnvironmentVariable() 的变量,无需重新启动我的程序(和 Visual Studio)。
在this posting、Anders K 中提到:
“确保在读取环境变量之前重新启动应用程序。如果您打开控制台窗口并更改“我的电脑”上的环境变量,也会发生同样的情况,这些不会在任何现有控制台窗口中注明。您需要重新启动它们以获取新环境变量的副本。”
这是否意味着 100% 无法检索 更新的“路径”变量?我不确定我是否在浪费时间。
另外,我尝试了this 之类的操作,但没有成功。
谢谢。
【问题讨论】:
-
只是一个想法,而不是一个解决方案......但您可以尝试从您的程序中启动另一个(短期)进程并使用它来读取环境变量
-
您应该查看 CreateEnvironmentBlock (msdn.microsoft.com/en-us/library/windows/desktop/…)。我以前没有使用过它,所以发布为评论而不是答案,但看起来应该适合你。
-
或者,要回显@andypaxo,shell 执行“cmd: ECHO %PATH%”,但请确保不要将 cmd 进程创建为现有进程的子进程,否则它只会继承您的环境块.
标签: visual-studio-2008 winapi visual-c++ environment-variables