【问题标题】:Set/Get command line system variables in C#在 C# 中设置/获取命令行系统变量
【发布时间】:2012-02-06 17:11:04
【问题描述】:

当我打开 Windows 命令提示符并键入“set”然后回车时,我会得到一个系统变量列表。

如何使用 Visual Studio 在 C# 中设置/获取那些?

我试过了:

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

但是,当我在命令行中键入“set”时,我没有看到名为“TestVariableName”且值为“test123”的新变量。

我做错了什么?

谢谢

【问题讨论】:

  • 你能echo %TestVariableName%吗?
  • 您可能没有设置环境变量的权限。

标签: c# variables command-line system


【解决方案1】:

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

如果您希望它影响其他程序,您应该使用this overloadEvironmentVariableTargetMachine

其次,环境变量是在进程启动时从系统或父进程复制的,即使在更广泛的系统中更改了它们,从正在运行的应用程序的角度来看也不会改变。

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

【讨论】:

  • 您还应该注意,子进程继承其父进程的当前环境。一旦您修改了自己的环境,任何更改都会传递给您随后生成的任何子进程。
  • 谢谢!知道了。这里最大的帮助是“启动一个新的命令行实例”
  • 所以,对于任何人来说,答案是:System.Environment.SetEnvironmentVariable("TestVariableName", "test123", EnvironmentVariableTarget.Machine);
  • 编辑以反映@NicholasCarey 的建议和EnvironmentVariableTarget 值中的错字。
猜你喜欢
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2018-07-08
  • 2013-06-17
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多