Training for D-Day

ブログの内容は個人の見解であり、所属する企業を代表するものではありません。

setx でWindows 環境変数を永続的に変更する

Windowsコマンドプロンプト
set
とすると環境変数の一覧が出てきます。
setを利用して、そのプロンプト内の環境変数はいじれますが、永続的な設定にはなりません。
永続的な設定(以下の図で、システムのプロパティ->詳細設定->環境変数にてUI上設定するのと同じ)をしたい場合は、setxを利用します。

setx

f:id:kshimizu1226:20150612053208p:plain

以下、setxのヘルプです。

SetX の使用法は 3 とおりあります: 

構文 1:
    SETX [/S システム [/U [ドメイン\]ユーザー [/P [パスワード]]]] 変数 値 [/M]

構文 2:
    SETX [/S システム [/U [ドメイン\]ユーザー [/P [パスワード]]]]
    変数 /K レジストリパス [/M]

構文 3:
    SETX [/S システム [/U [ドメイン\]ユーザー [/P [パスワード]]]]
         /F ファイル {変数 {/A x,y | /R x,y 文字列}[/M] | /X} [/D 区切り文字]

説明:
    ユーザーまたはシステムの環境の中で環境変数を作成または
    変更します。引数、レジストリ キー、またはファイル入力を
    もとに変数を設定することができます。

パラメーター一覧:
    /S     システム        接続先のリモート システムを指定します。

    /U [ドメイン\]ユーザー  コマンドが実行されるユーザー
                            コンテキストを指定します。

    /P     [パスワード]    指定されたユーザーのコンテキストのパスワード
                           を指定します。省略すると入力が促されます。

    変数                   設定する環境変数を指定します。

    値                     環境変数に割り当てられる値を指定
                           します。

    /K     レジストリパス  レジストリ キーからの情報を基に変数が
                           設定されることを指定します。
                           パスは hive\key\...\value の形式で指定します。
                           例:
                           HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                           Control\TimeZoneInformation\StandardName.

    /F     ファイル        使用するテキスト ファイルの名前を指定し
                           ます。

    /A     x、y            ファイルの絶対座標 (行 X、項目 Y) を
                           パラメーターとして指定し、ファイル内を検索
                           します。

    /R     x,y 文字列      "文字列" を検索パラメーターとして
                           ファイルへの相対座標を指定します。

    /M                     変数をシステム全体 (HKEY_LOCAL_MACHINE)
                           の環境で設定することを指定します。
                           既定では、HKEY_CURRENT_USER 環境で変数
                           を設定するように設定されています。

    /X                     x y 座標でファイルの内容を表示します。

    /D     区切り文字    "," や "\" など、追加の区切り文字を指定し
                           ます。ビルトインの区切り文字は空白、タブ、
                           キャリッジ リターン、ラインフィードです。
                           ASCII 文字はどれでも追加の区切り文字として
                           使用できます。区切り文字は、ビルトインの
                           ものも含めて最大 15 個まで指定できます。

    /?                     このヘルプを表示します。

注意: 1) SETX は、レジストリの中のマスター環境に変数を書き込みます。

      2) ローカル システム上では、このツールで作成または変更した
         変数は、現在のコマンド ウィンドウでは利用できませんが、
         その後のコマンド ウィンドウで利用できます。

      3) リモート システム上では、このツールで作成または変更した
         変数は次のログオン セッションで利用できます。

      4) 有効なレジストリ キー データの種類は  REG_DWORD、REG_EXPAND_SZ、
         REG_SZ, REG_MULTI_SZ です。

      5) サポートされているハイブは  HKEY_LOCAL_MACHINE (HKLM)、
         HKEY_CURRENT_USER (HKCU) です。

      6) 区切り文字は大文字と小文字を区別します。

      7) REG_DWORD 値は、レジストリから 10 進数形式で
         抽出されます。

例:
    SETX MACHINE COMPAQ 
    SETX MACHINE "COMPAQ COMPUTER" /M
    SETX MYPATH "%PATH%"
    SETX MYPATH ~PATH~
    SETX /S system /U user /P password  MACHINE COMPAQ 
    SETX /S system /U user /P password MYPATH ^%PATH^% 
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\TimeZoneInformation\StandardName
    SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber" /M
    SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\TimeZoneInformation\
         StandardName
    SETX /S system /U user /P password  BUILD /K 
         "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber" /M
    SETX /F ipconfig.out /X 
    SETX IPADDR /F ipconfig.out /A 5,11 
    SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*." 
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S system /U user /P password  /F c:\ipconfig.out /X

setxは、何のオプションも利用しないと、ユーザ環境変数を編集しますが、
/M をつけると、システム環境変数の編集も可能です。