
SET
“暫時地”設定/更改environment variable
.
如何從已更改的外殼/進程中獲取“原始”/“全局”/“未更改”?
解釋一下標題: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」是機器範圍內的,但 %apps% 為普通用戶獲取價值。
因此,格式“%ABC%”同時取得使用者變數和機器變數。
若要清除該變量,請以管理員身分執行setx apps "" /m