SET
“暂时地”设置/更改environment variable
。
我如何从已被改变的 shell/进程中获取“原始”/“全局”/“未改变”的?
解释一下标题:SET
我称之为
本地范围并且SETX
在一个全球的一、
%ABC%
从中获取变量本地范围,但我正在寻找一些东西来从全球的一。
因此SET
:SETX
::%ABC%
: ???
答案1
为了避免与网络域中使用的术语混淆,不要使用“本地”而要使用“每个用户”,不要使用“全局”而要使用“每台机器”(针对所有本地用户)。
“本地”的真正含义是“仅在这台机器上”,可能意味着全部本地用户。
每台机器的变量存储在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
每个用户变量存储在
HKEY_CURRENT_USER\Environment
SETX 可以针对每个用户或每台机器。
SET 是临时的(在 CMD 会话持续期间);SETX 是永久的(存储在注册表中)。
使用 SETX 设置的变量在设置时打开的任何 CMD 会话中都不可用;它将在新的 CMD 会话中可用。
要设置“每台机器”变量,请使用带有 SETX 的 /M 选项。
示例演示:
以管理员身份输入:
C:\WINDOWS\system32>setx apps %SystemDrive%\apps /m
SUCCESS: Specified value was saved.
然后以非管理员用户身份打开另一个 cmd 窗口:
C:\Users\jh>echo %apps%
C:\apps
尽管“应用程序”是机器范围的,但 %apps% 却获得了普通用户的价值。
因此格式“%ABC%”同时获取用户和机器变量。
要清除该变量,以管理员身份执行setx apps "" /m