LoginSignup
3
3

More than 5 years have passed since last update.

親プロセスで設定したプロセス内環境変数を外部スクリプトから参照してみる

Posted at

C# のアプリケーションで設定したプロセス内環境変数をバッチファイルや wsh で参照したいケースがあったので、テストしてみました。

また、「親プロセスのプロセス内環境変数は子プロセス実行時にコピーされる」との話だったので、ついでにテストしてみました。

Program.cs
class Program
{
    static void Main(string[] args)
    {
        Environment.SetEnvironmentVariable("WORK", "work", EnvironmentVariableTarget.Process);
        Process proc = Process.Start("test.bat");
        proc.WaitForExit();
    }
}
test.bat
echo %WORK%

set WORK2=WORK2
call test2.bat

pause
test2.bat
echo %WORK%
echo %WORK2%

set WORK3=Work3

CScript test3.js
test3.js
var wsh = WScript.CreateObject("WScript.Shell");
var env = wsh.Environment("Process");

WScript.Echo(env.item("WORK"));
WScript.Echo(env.item("WORK2"));
WScript.Echo(env.item("WORK3"));
output
>echo work
work

>set WORK2=WORK2

>call test2.bat

>echo work
work

>echo WORK2
WORK2

>set WORK3=Work3

>CScript test3.js
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

work
WORK2
Work3

>pause
続行するには何かキーを押してください . . .

このように、子は親のプロセス内環境変数も参照できるみたいです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3