
SET
「一時的に」を設定/変更しますenvironment variable
。
変更されたシェル/プロセスから「元の」/「グローバル」/「変更されていない」ものを取得するにはどうすればよいですか?
タイトルを説明すると、SET
私が「
ローカルスコープそしてSETX
、グローバル1.
%ABC%
変数を取得しますローカルスコープ、しかし、私はそれを得るために何かを探していますグローバル1つ。
したがって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