【问题标题】:environmental variable in a c#c#中的环境变量
【发布时间】:2012-06-09 03:43:33
【问题描述】:

我正在使用以下命令在 c# 控制台应用程序中为环境变量设置一个值。

 System.Environment.SetEnvironmentVariable(envvar, result,EnvironmentVariableTarget.Process);

在命令窗口中运行应用程序后,当我尝试回显该变量时,我看不到该值。 我必须在批处理文件中使用此应用程序。 我想要 SET 命令之类的功能。请帮忙..

编辑: 我尝试使用 System.Environment.SetEnvironmentVariable(envvar,result,EnvironmentVariableTarget.user) 并传播我尝试过的更改Propagating Change in Env VAr。但我不能在同一个命令窗口中回显变量。

让我重新表述一下这个问题: 我想在 c# 中为 Env Var 设置一个值。我必须能够在同一个命令窗口中使用该变量(即我不应该打开一个新的 cmd 窗口来查看更改)。我们使用 SET 命令,我们可以立即使用该变量 .. rt ?我想要这样的功能。请帮忙

【问题讨论】:

  • 使用该方法创建的环境变量在当前进程中可见。
  • 我尝试使用 EnvironmentVariableTarget.User。在当前用户下正在创建一个新的环境变量,但新创建的变量对批处理文件不可见。如果我关闭并打开一个新的命令窗口,那么我可以使用该变量。我看到了一些解决方案来传播环境变量中的更改,但我不确定如何将它们包含在我的程序中。我的程序名称是 test.exe。我将在批处理文件中以下列方式使用它。 “test var := asdf”。预期的输出是“var”应该被分配“asdf”,我应该能够通过在 bacth 文件的其余部分中使用 %var% 来获得该值。

标签: c# command-line


【解决方案1】:

当您使用 EnvironmentVariableTarget.Process 时,变量集将仅在当前进程中可见,如您在此示例中所见:

System.Environment.SetEnvironmentVariable("myVar", "myValue", EnvironmentVariableTarget.Process);
string s = System.Environment.GetEnvironmentVariable("myVar",EnvironmentVariableTarget.Process);

myVar 上方将显示 s = "myValue" 但在命令窗口中不可见。

如果要设置在命令窗口中可见的值,则需要使用 EnvironmentVariableTarget.User:

System.Environment.SetEnvironmentVariable("myVar", "myValue", EnvironmentVariableTarget.User);

这样设置 myVar=myValue 将被存储,然后您可以在命令窗口中看到。

详细样本位于here

【讨论】:

    【解决方案2】:

    为了查看当前批处理中的环境。您必须在程序中将其作为字符串输出并解析并在批处理文件中调用 set。

    或者您可以尝试 EnvironmentVariableTarget.User。使用此选项设置时,环境将在所有新进程中可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2016-11-13
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      相关资源
      最近更新 更多