CMD: SET : SETX :: %ABC% : ??? -- SET による変更後に「グローバル」/「元の」環境変数を取得する

CMD: SET : SETX :: %ABC% : ??? -- SET による変更後に「グローバル」/「元の」環境変数を取得する

SET 「一時的に」を設定/変更しますenvironment variable

変更されたシェル/プロセスから「元の」/「グローバル」/「変更されていない」ものを取得するにはどうすればよいですか?


タイトルを説明すると、SET私が「 ローカルスコープそしてSETXグローバル1.
%ABC%変数を取得しますローカルスコープ、しかし、私はそれを得るために何かを探していますグローバル1つ。

したがってSETSETX::%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

関連情報