Windows 11 環境変数の確認と設定する

はじめに

Windows 11Windows 10:選択

Windows11 のユーザー環境変数とシステム環境変数の一覧を確認する方法と設定する方法を紹介します。

PowerShell に Get-ChildItem env: を入力して、環境変数の一覧を確認できます。

検索から 環境変数 を入力して 環境変数の編集 から、環境変数を設定できます。

%USERPROFILE% の場所は C:\Users\ユーザー名 です。この値はアカウントのユーザー名を変更しても変わりません。

  • 目次
    • 環境変数を確認する前に
    • 環境変数を確認する
    • 環境変数の一覧
    • 環境変数を設定する
    • 設定が反映されるタイミング

環境変数を確認する前に

環境変数には「保存されている値」と「使用時の値」があります。

  • 保存されている値:この値で保存されています。値に別の環境変数が入力されていることがあります。
    例:%TEMP% = %SystemRoot%\TEMP
  • 使用時の値:値に別の環境変数が入力されているときは、それを展開した値です。この値がアプリで使用されます。
    例:%TEMP% = C:\Windows\TEMP

優先度

環境変数には次の種類があります。

  • システム:すべてのユーザーで共通して使用できます。レジストリに保存されています。
  • ユーザー:そのユーザーのみ使用できます。レジストリに保存されています。
  • プロセス:Windows が設定したものはすべてのアプリで使用できます。アプリが設定したものはそのアプリでのみ使用できます。それらの起動時に設定され、どこにも保存されていません。

それぞれの種類に同じ名前の環境変数があるときは プロセス > ユーザー > システム の順に優先度が高くなっています。プロセスにあればそれが使用され、他の種類の値は使用されません。

%Path% は特殊で優先度が逆になり システム;ユーザー のように両方が結合され、システムから先に参照されます。

環境変数を確認する

環境変数を確認する次の方法を紹介します。

  • PowerShell (使用時の値)
  • コマンドプロンプト (使用時の値)
  • 環境変数画面 (保存されている値)
  • システム情報画面 (保存されている値)

PowerShell (使用時の値)

PowerShell に Get-ChildItem env: と入力して Enter キーを入力します。

環境変数の使用時の値の一覧を確認できます。

1

コマンドプロンプト (使用時の値)

コマンドプロンプトに SET と入力して Enter キーを入力します。

環境変数の使用時の値の一覧が 変数名=値 の形式で確認できます。

2

SET 頭文字 の形式で SET P と入力すると P から始まる名前に絞り込めます。

環境変数の画面 (保存されている値)

検索から 環境変数 または env と入力して設定の [環境変数を編集] をクリックします。

3

環境変数の保存されている値の一覧を確認できます。表示されている値は使用時の値です。編集をクリックすると保存されている値を表示できます。

4

システム情報画面 (保存されている値)

検索から システム情報 または msinfo32 と入力して [システム情報] をクリックします。

5

[ソフトウェア環境] から [環境変数] をクリックします。

環境変数の保存されている値の一覧を確認できます。

6

環境変数の一覧

記載している値は、Windows に何もインストールされていない状態の環境変数の値です。ほとんどのパソコンではバージョンアップやアプリのインストールによって、購入時点でもここに記載されているより多くの環境変数があり、値も変更されています。

環境変数をエクスプローラーなどで使用するには %環境変数名% のように % で囲みます。そのためここでは % 付きで名前を記載しています。

使用時の値

値に ユーザー名 などカタカナで記載されている部分は、ログインしているユーザーの名前などに置き換えられます。

環境変数名
%ALLUSERSPROFILE%C:\ProgramData
%APPDATA%C:\Users\ユーザー名\AppData\Roaming
%COMMONPROGRAMFILES%C:\Program Files\Common Files
%COMMONPROGRAMFILES(x86)%C:\Program Files (x86)\Common Files
%CommonProgramW6432%C:\Program Files\Common Files
%COMPUTERNAME%コンピューター名
%ComSpec%C:\Windows\System32\cmd.exe
%HOMEDRIVE%C:\
%HOMEPATH%\Users\ユーザー名
%LOCALAPPDATA%C:\Users\ユーザー名\AppData\Local
%LOGONSERVER% \\ログインサーバー名
%Path%C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
%PATHEXT%.com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc
%PROGRAMDATA%C:\ProgramData
%PROGRAMFILES%C:\Program Files
%PROGRAMFILES(X86)%C:\Program Files (x86)
%ProgramW6432%C:\Program Files
%PROMPT%$P$G
%PSModulePath%C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
%PUBLIC%C:\Users\Public
%SystemDrive%C:
%SystemRoot%C:\Windows
%TEMP%C:\Users\ユーザー名\AppData\Local\Temp
%TMP%C:\Users\ユーザー名\AppData\Local\Temp
%USERDOMAIN%ドメイン名
%USERNAME%ユーザー名
%USERPROFILE%C:\Users\ユーザー名
%windir%C:\Windows

保存されている値

環境変数名 種類
%ComSpec%%SystemRoot%\system32\cmd.exeシステム
%Path%%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsユーザー
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbemシステム
%PATHEXT%.com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.mscシステム
%PSModulePath%%SystemRoot%\system32\WindowsPowerShell\v1.0\Modulesシステム
%TEMP%%USERPROFILE%\AppData\Local\Tempユーザー
%SystemRoot%\TEMPシステム
%TMP%%USERPROFILE%\AppData\Local\Tempユーザー
%SystemRoot%\TEMPシステム
%USERNAME%SYSTEMシステム
%windir%%SystemRoot%システム

保存されているレジストリの場所は下記の「設定が反映されるタイミング」をご覧ください。

環境変数を設定する

設定を変更する前に値をコピーしておくと間違って編集したときに元に戻せます。下記の「設定が反映されるタイミング」にレジストリに保存されている場所を記載しているので、それをエクスポートすると簡単です。

検索から 環境変数 または env と入力します。

  • 管理者:[システム環境変数の編集] をクリックします。
  • 標準ユーザー:[環境変数を編集] をクリックします。
13

「システム環境変数の編集」をクリックしたときは [環境変数] をクリックします。

7

どちらの方法でも環境変数を編集する画面が表示されます。

管理者ならすべての値を編集できますが、標準ユーザーはシステム環境変数を編集できません。

編集するには [新規] をクリックするか、[環境変数] を選択してから [編集] または [削除] をクリックします。

8

[変数名] と [変数値] を入力して [OK] をクリックします。

変数値に複数の値を設定するには ; で区切って 値1;値2 の形式で入力します。他の環境変数を参照するには %環境変数名% のように入力します。

9

編集されたので [OK] をクリックします。

10

環境変数が設定されました。設定が反映されるタイミングについては下記の「設定が反映されるタイミング」をご覧ください。

Path を設定

環境変数の %Path% は特殊で システム;ユーザー のようにシステムとユーザーの環境変数が結合され、システムの値が先に参照されます。

環境変数画面からユーザー環境変数の [Path] を選択して [編集] をクリックします。

11

[新規] をクリックして [値] を入力します。入力したら [OK] をクリックします。

12

環境変数画面でも [OK] をクリックします。

入力した値が自動で ; 区切りで設定されます。

PowerShell から設定する

PowerShell に次のように入力して設定できます。コマンドや変数名に大文字と小文字の区別はありません。

  • ユーザー環境変数[Environment]::SetEnvironmentVariable('変数名', '値', 'User')
  • システム環境変数[Environment]::SetEnvironmentVariable('変数名', '値', 'Machine') PowerShell を管理者として実行する必要があります。

変数名 Name に値 Value を設定するには [Environment]::SetEnvironmentVariable('Name', 'Value', 'User') を入力して Enter キーを入力します。

環境変数が設定されます。

値に別の環境変数を使用するにはそのまま [Environment]::SetEnvironmentVariable('Name', '%USERNAME%', 'User') のように % で変数名を囲みます。

コマンドプロンプトから設定する

コマンドプロンプトに次のように入力して設定できます。コマンドや変数名に大文字と小文字の区別はありません。

  • ユーザー環境変数SETX 変数名 値
  • システム環境変数SETX 変数名 値 /M コマンドプロンプトを管理者として実行する必要があります。

変数名 Name に値 Value を設定するには SETX Name Value を入力して Enter キーを入力します。

環境変数が設定されます。

値に別の環境変数を使用するには SETX Name ^%USERNAME^% のように変数名を ^% で囲みます。

設定が反映されるタイミング

環境変数画面で [OK] をクリックした時や、PowerShell などからコマンドを実行した時点でレジストリに保存されます。しかし環境変数は各アプリの起動時に取得しているため、既に起動中のアプリには反映されません。そのアプリを再起動すると反映されますが、バックグラウンドで動作しているものには反映されません。

確実に反映させるには Windows を再起動します。

環境変数はレジストリの次の場所に保存されています。

ユーザー環境変数:
HKEY_CURRENT_USER\Environment
システム環境変数:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

反映されないとき

優先度の影響で設定しても反映されていないように見えることがあります。

種類がプロセスの %USERPROFILE% をユーザーやシステムに追加しても、優先度の関係で使用時には必ずプロセスだけが使用されるので、反映されていないように見えます。