Answers:
这实际上取决于环境变量的设置方式。例如,如果您在命令行中使用了“ SET”命令,则它只会影响当前实例。另一方面,诸如“ SETX”之类的命令将永久调整环境变量的值。SETX将确保所有将来的cmd实例都能看到更新。它不会影响本地环境。
如果环境变量是由另一个应用程序设置的并且未更新,则通常最简单的方法是重新启动“ explorer.exe”进程,注销并重新登录或重新启动。 本质上,您只需要告诉资源管理器重新加载环境变量即可。如果它是您开发的应用程序(例如安装程序),请确保正在调用SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment");
。这告诉资源管理器刷新其环境变量的缓存。
这很重要,因为另一个进程启动的应用程序将从其父级继承其环境变量。这样,如果您从资源管理器启动cmd,则会在资源管理器看到变量时获得它们。
BartPE员工花费了大量时间在Windows中设置和撤消主环境。
主要环境存储在注册表中,但是资源管理器外壳将其读取到其地址。从这里将其发送到每个cmd.exe会话。
SET仅影响cmd环境。SETX允许您更改主环境,但设置不会反映在本地环境中。
弗兰克·韦斯特莱克(Frank Westlake)的CONSET和4NT可以从注册表中获取条目,但是对于主环境尤其没有任何开关。
通常加载的窗口会跟踪注册表设置,而通过minint(即WinPE)加载的窗口则不会。因此,设置注册表和读取注册表都可以,但是只有正常启动的窗口才能看到这些设置,并将它们传递给新的cmd.exe程序。
现在,这非常容易,无需重新启动外壳程序:
RefreshEnv.bat
RefreshEnv.bat
观察新添加的环境变量在任何新的Command / Powershell实例中均可用,并验证刷新。