C#でコマンドラインシステム変数を設定/取得する

Windowsのコマンドプロンプトを開き、 "set"と入力してEnterを押すと、システム変数のリストが表示されます。

ビジュアルスタジオを使用してC#でそれらを設定/取得するにはどうすればよいですか?

私は試した:

System.Environment.SetEnvironmentVariable("TestVariableName", "test123");

しかし、コマンドラインに「set」と入力すると、「testV3」という値を持つ新しい変数「TestVariableName」は表示されません。

私は間違って何をしていますか?

ありがとう

2
環境変数を設定する権限を持っていない可能性があります。
追加された 著者 Joe,
echo%TestVariableName%できますか?
追加された 著者 Bali C,

1 答え

まず、現在のプロセスに格納されている環境変数を作成、変更、または削除したSetEnvironmentVariableのオーバーロードを行います。 ( http://msdn.microsoft.com /en-us/library/system.environment.setenvironmentvariable.aspx?ppud=4 )。

このオーバーロード EvironmentVariableTarget

第2に、環境変数は、プロセスの開始時にシステムまたは親プロセスからコピーされ、広範なシステムで変更されたとしても、実行中のアプリケーションの観点から決して変更されません。

あなたの場合は、変数を設定するコマンドラインの新しいインスタンスを開始し、変数が表示されるはずです。

7
追加された
ありがとうございました!とった。ここでの最大の助けは、「コマンドラインの新しいインスタンスを開始する」ことでした。
追加された 著者 user952342,
誰でも探しているなら、答えは: System.Environment.SetEnvironmentVariable( "TestVariableName"‌、 "test123"、EnvironmentVariableTarget.Machine);
追加された 著者 user952342,
また、子プロセスは親プロセスの現在の環境を継承することにも注意してください。独自の環境を変更すると、その後に発生する子プロセスに変更が渡されます。
追加された 著者 Nicholas Carey,
@ NicholasCareyの提案と EnvironmentVariableTarget の値の誤字を反映するように編集されました。
追加された 著者 Chris Shain,