2012-02-06 34 views
2

当我打开一个Windows命令提示符并键入“set”,然后输入,我得到一个系统变量列表。在C#中设置/获取命令行系统变量

如何在C#中使用visual studio设置/获取它们?

我想:

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

然而,当我键入“设置”进入命令行,我看不到我的所谓的“TestVariableName”与“test123”的价值新变量。

我在做什么错?

由于

+0

你可以'echo%TestVariableName%'? – 2012-02-06 17:13:04

+0

您可能没有权限设置环境变量。 – Joe 2012-02-06 17:14:04

回答

7

首先,您用来SetEnvironmentVariable方法的过载“创建,修改或删除存储在当前过程环境变量”。 (http://msdn.microsoft.com/en-us/library/system.environment.setenvironmentvariable.aspx?ppud=4)。

如果您希望影响其他程序,您应该使用this overloadEvironmentVariableTarget的值Machine。其次,环境变量在进程启动时从系统或父进程复制而来,即使它们在更广泛的系统中被改变,也不会从正在运行的应用程序的角度改变。

在你的情况下,在设置变量之后启动命令行的新实例,你应该看到你的变量。

+1

您还应该注意,子进程继承其父进程的* current *环境。一旦你修改你自己的环境,任何改变都会传递给你随后产生的任何子进程。 – 2012-02-06 17:39:51

+0

谢谢!得到它了。这里最大的帮助是“开始一个命令行的新实例” – user952342 2012-02-06 17:46:55

+0

因此,对于任何人来说,答案是: 'System.Environment.SetEnvironmentVariable(“TestVariableName”,“test123”,EnvironmentVariableTarget.Machine);' – user952342 2012-02-06 17:58:03