如何从系统属性获取Windows操作系统环境variables

我正在遇到有关System Property环境variables的奇怪问题。

如您所知,我们可以打开Computer->Property->Advanced System Settings->Advanced->System Environment Variables->User Variables for admin

我将variablesTEMP的值更改为C:\ mytemp \,然后单击确定保存。

但是,在命令行中,当我回显%TEMP% ,它仍然显示原始path, C:\Users\admin\AppData\Local\Temp

当我在资源pipe理器中input%TEMP%时,它会转到C:\ mytemp

现在我想要用户API获取path, GetEnvironmentVariable()也将返回与命令行中的echo%TEMP%相同的path。 我怎么能像攻击者那样得到这条路呢? 提前致谢。

PS。 操作系统是Win7 x86

Solutions Collecting From Web of "如何从系统属性获取Windows操作系统环境variables"

通过计算机 – >属性 – >高级系统设置 – >高级 – >系统环境变量 – >用户变量更改环境路径将立即生效。 但是,请注意,正在运行的程序将不会获取最新的环境变量。

所以我以为你只是没有重新打开一个新的cmd回声。

打开一个新的cmd,并再次回显,新的路径将被显示。

环境变量在进程运行时被设置并且不被更新。

要验证这一点,请打开命令提示符,然后键入“echo%TEMP%”。 保持命令提示符处于打开状态并更改%TEMP%变量。 无论如何,输入“echo%TEMP%”将会打印旧的值。

现在打开一个新的命令提示符和“echo%TEMP%”,新的命令提示符将打印新的值。

作为一种解决方法,您可以启动一个新线程来检查当时的设置。