2015-08-21 59 views
0

我有一个简单的C#控制台应用程序来设置环境变量。有问题的线是:Environment.SetEnvironmentVariable无法正常工作

Environment.SetEnvironmentVariable("testvar", args[0]); 

我已检查并args [0]有一个值。

当我从cmd提示符运行编译的exe时,没有错误。

当我然后使用set testvar,我得到一个错误,说环境变量没有定义。

默认情况下,SetEnvironmentVariable方法只为进程设置它。所以我认为它只存在于exe的一生中。如果是这样的话,我如何在cmd提示符的生命周期中设置它?

任何想法?

我靶向.NET 4

问我的问题将是另一种方式:

如何获得C#来存储,可的exe文件后读取当前命令提示符的值该设定值,已完成。在同一个用户名下有多个登录名可能会使用这种方式,因此将值存储在某处可能与其他登录名冲突。

+1

阅读MSDN上的文档:https://msdn.microsoft.com/en-us/library/z46c489x(v=vs.110).aspx具体来说:*“创建,修改或删除环境变量**存储在当前进程**中。“* –

+0

请参阅此过载:https://msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspx用于设置操作系统。 –

+0

我试过EnvironmentVariableTarget.User,它有相同的效果 – Graham

回答

1

听起来像你想整个机器的环境变量,而不仅仅是这个过程。

Environment.SetEnvironmentVariable("testvar", args[0], EnvironmentVariableTarget.Machine); 

不幸的是,您需要在环境变量更新之前重新启动您的进程。 C# set environment variable

它可能适合您最好将信息存储在注册表或文件中。这完全取决于您的应用程序能够使用的功能,但这也可能是一种选择。