Skip to content

MS_EnvironmentVariables

nishi_74322014 edited this page Aug 3, 2026 · 3 revisions

環境変数の設定方法

概要

以下の方法がある

  • レジストリを使用する方法(レジストリの設定方法
  • Win32APIを使用する方法
  • WMIを使用する方法
  • Microsoft Windows Installer(MS_WindowsInstaller.md)を使用する方法

詳細

SET、SETX

SET、SETXがあるので、コチラも注意する

SET

SETコマンドで設定した変数の値は、

  • そのコマンドプロンプト内(およびそこから起動したプロセス)でのみ有効
  • 別のプロセスやユーザからは参照できないし、変更することもできない。

SETX

SETXコマンドで設定した変数の値は、

  • 既定ではユーザー環境変数(レジストリ)に設定される。
  • 環境変数設定なので、読み込みにはプロセスの再起動が必要になる。
  • システム環境変数を設定するには、管理者実行で /m オプションを使用する。
  • 削除には、レジストリ直接編集が必要になる(のが(Linuxユーザからすると)?らしい)。

※ SETX には 値が 1024 文字で切り捨てられるという制限があり、 PATH のような長い変数の設定に使うと破壊されうる(下記「参考」の Qiita 記事の趣旨)。 PowerShell の [Environment]::SetEnvironmentVariable() を使うのが安全。

REG_SZ、REG_EXPAND_SZ

REG_SZ、REG_EXPAND_SZ の扱いを誤ると壊すので注意。

データ型(レジストリ) .NET Framework 説明
REG_SZ(文字列値) System.String null で終わる Unicode 文字列値
REG_EXPAND_SZ(展開可能な文字列値) System.String 環境変数(例えば %USERNAME%%SystemRoot% など)を含む null で終わる Unicode 文字列

移行メモ: 原文はこの箇所が「データ型 / レジストリ / .NET Framework / 説明」という 4 項目の箇条書きを 2 つ並べた形(表を意図したと見られる崩れた記法)だったため、表に整えた。

システム / ユーザ環境変数

同じ変数があった場合、

  • システム環境変数 — 全ユーザから参照可能。
  • ユーザ環境変数(優先) — 当該ユーザから参照可能。

PATH だけは例外で、上書きではなく システム環境変数の値の後ろにユーザ環境変数の値が連結される。

参考


Tags: Windows

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally