C# Environment.SetEnvironmentVariable不工作
我有一个简单的C#控制台应用程序,可以设置一个环境变量。这条线是:C# Environment.SetEnvironmentVariable不工作,c#,C#,我有一个简单的C#控制台应用程序,可以设置一个环境变量。这条线是: Environment.SetEnvironmentVariable("testvar", args[0]); 我已检查,args[0]中有一个值 当我从cmd提示符运行编译的exe时,没有错误 然后,当我使用settestvar时,我得到一个错误,指出环境变量未定义 默认情况下,SetEnvironmentVariable方法仅为流程设置它。所以我认为它只存在于exe的生命周期中。如果是这种情况,如何设置cmd提示符的生存时
Environment.SetEnvironmentVariable("testvar", args[0]);
我已检查,args[0]中有一个值
当我从cmd提示符运行编译的exe时,没有错误
然后,当我使用settestvar
时,我得到一个错误,指出环境变量未定义
默认情况下,SetEnvironmentVariable方法仅为流程设置它。所以我认为它只存在于exe的生命周期中。如果是这种情况,如何设置cmd提示符的生存时间
有什么想法吗
我的目标是.NET4
问我问题的另一种方式是:
如何让C#为当前cmd提示符存储一个值,该值可以在设置该值的exe文件完成后读取。同一用户名下的多个登录可能正在使用此用户名,因此将值存储在某个位置可能与另一个登录冲突。听起来您希望整个计算机使用环境变量,而不仅仅是此过程
Environment.SetEnvironmentVariable("testvar", args[0], EnvironmentVariableTarget.Machine);
不幸的是,您需要在更新环境变量之前重新启动流程。
最好将信息存储在注册表或文件中。这取决于您的应用程序能够使用什么,但这也可能是一个选项。听起来您希望整个机器使用环境变量,而不仅仅是这个过程
Environment.SetEnvironmentVariable("testvar", args[0], EnvironmentVariableTarget.Machine);
不幸的是,您需要在更新环境变量之前重新启动流程。
最好将信息存储在注册表或文件中。这取决于您的应用程序能够使用什么,但这也可能是一个选项。阅读MSDN上的文档:特别是:“创建、修改或删除存储在当前进程中的环境变量。”请参阅此重载:有关操作系统的设置。我已尝试EnvironmentVariableTarget.User,并且它具有相同的效果注销和重新登录,您将看到效果。不,没有比这更好的了。请阅读MSDN上的文档:特别是:“创建、修改或删除存储在当前进程中的环境变量”。请参阅此重载:了解操作系统的设置。我尝试了EnvironmentVariableTarget。用户和它具有相同的效果注销和重新登录,您将看到效果。不,没有比这更好的了。