環境変数を一時的にセットしてプログラム(exe)を実行する

ページ作成日 :

一般的な環境変数の運用について

Windows の仕組みとして備わっている環境変数は Windows 全体のすべてのプログラムで共有して使用することができ、あらかじめ環境変数をセットしておいてから使うことになります。 ほとんどの場合は最初から設定されているか、各種プログラムをインストールするときに設定されます。

しかし、Windows のシステムとして設定された環境変数はコンピューター単位、またはログインしているユーザー単位で保持されているため、 一時的にしか使用しない環境変数を使う必要のあるプログラムにおいては、システム全体に影響のある場所に対しての変更はなるべく避けたいところです。

プログラムを起動している間だけ使用できる環境変数を設定する

ローカルで使用するバッチやツールなどのクライアントアプリ向けになりますが、 bat ファイルを経由させることによってそのプログラム内だけで使用できる環境変数を設定することができます。

例えば、コンソールアプリで TEST_VALUE という環境変数を使用したい場合があるとします。 OS, PATHEXT については Windows で最初から定義されている環境変数です。

static void Main(string[] args)
{
  Console.WriteLine("■環境変数");

  Console.WriteLine($"OS         = {Environment.GetEnvironmentVariable("OS")}");
  Console.WriteLine($"PATHEXT    = {Environment.GetEnvironmentVariable("PATHEXT")}");
  Console.WriteLine($"TEST_VALUE = {Environment.GetEnvironmentVariable("TEST_VALUE")}");

  Console.WriteLine("いずれかのキーを押して終了してください。");
  Console.ReadKey();
}

Visual Studio でデバッグ実行する場合は Visual Studio のプロジェクトのデバッグ設定であらかじめ環境変数を入れておけば OK です。

exe を作成し単独で実行する場合に環境変数を一時的に設定するには、bat ファイルを経由させて環境変数をセットできます。 以下のような bat ファイルをテキストで作成します。文字コードは Shift-JIS にしてください。

@echo off
rem 環境変数をセット
set TEST_VALUE=セットした値

rem プログラム起動
EnvironmentVariableGet.exe

set コマンドを使用することによって環境変数に値を入れておくことができます。 この値は実行している bat が終了するまで、または bat の中で起動したアプリケーションが終了するまで有効です。

bat ファイルを起動すると環境変数がセットされていることを確認できます。