環境変数を取得するにはどうすればよいですか?何かが不足している場合は値を設定しますか?
9 に答える
System.Environmentクラスを使用します。
メソッド
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
と
System.Environment.SetEnvironmentVariable(variable, value [, Target])
あなたのために仕事をします。
オプションのパラメータTarget
は列挙型EnvironmentVariableTarget
でMachine
、 、Process
、または のいずれかUser
です。省略した場合、デフォルトのターゲットは現在のプロセスです。
.NET コンソール アプリで PATH 環境変数を読み取る作業をしているときに、これに遭遇しました。System.Environment.GetEnvironmentVariable を使用すると、環境変数が自動的に展開されることがわかりました。
私はそれを望んでいませんでした...つまり、「%SystemRoot%\system32」などのパス内のフォルダーが「C:\Windows\system32」に書き換えられていたということです。展開されていないパスを取得するには、これを使用する必要がありました。
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
私にとって魅力のように働きました。
取得および設定
得る
string getEnv = Environment.GetEnvironmentVariable("envVar");
設定
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
これは、マシン設定である環境変数に対して機能します。ユーザーの場合は、代わりにユーザーに変更してください。
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
Visual Studio 2019 -- プロジェクトを右クリックして [プロパティ] > [設定] を選択し、名前 (ConnectionString など)、型、値を指定して新しい変数を追加します。次に、コードで次のように読み取ります。
var sConnectionStr = Properties.Settings.Default.ConnectionString;
これらの変数は、プロジェクトの種類に応じて構成ファイル (web.config または app.config) に保存されます。以下に例を示します。
<applicationSettings>
<Testing.Properties.Settings>
<setting name="ConnectionString" serializeAs="String">
<value>data source=blah-blah;etc-etc</value>
</setting>
</Testing.Properties.Settings>
</applicationSettings>
次を使用して環境変数を更新できます
string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty;
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";"))
EnvPath = EnvPath + ';';
EnvPath = EnvPath + @"C:\Test";
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);