2010-06-09 66 views
1

我试图用句子如何设置一个名为CLIENTIP的环境变量?

Environment.SetEnvironmentVariable("CLIENTIP", <value>) 

但变量不创建。我使用了字符串变量和常量来设置值。

那么,我该如何做到这一点工作?

+0

在该行之后,尝试使用'string val = Environment.GetEnvironmentVariable(“CLIENTIP”);'val应该具有您设置的值。您需要使用重载将'EnvironmentVariableTarget'设置为'Machine','Process'(默认值)或'User'。 – 2010-06-09 15:27:12

回答

2

你能解释一下你没有用的意思吗?该代码肯定会为当前进程设置环境变量CLIENTIP

如果您想更广泛地设置它,您将不得不使用SetEnvironmentVariable方法的不同超载。

Environment.SetEnvironmentVariable(
    "CLIENTIP", 
    value, 
    EnvironmentVariableTarget.Machine); 

EnvironmentVariableTarget参数可让您定位进程,机器或当前用户。

注意:这些更改可能不会显示在现有的进程中,因为并非所有类型的进程都立即对此更改作出响应(cmd.exe是一个想到的问题)。但它会显示在未来的流程上。

+0

Afaik是唯一一个立即适应变化的过程,因为这是一个启动过程。 – Joey 2010-06-09 15:17:36

+1

这可能是关键。环境变量有多个副本。尝试启动两个命令行。在第一次运行'set test = 123'然后'set'。你会看到'test'存在。在第二次运行'set'。 'test'不存在。他们每个人都有自己的环境变量的“工作副本”。当一个进程启动时,它将拥有一个父进程变量的副本,但它们将是独立的。两个命令行进程都使用相同的变量(来自explorer.exe?)启动。任何更改只会影响其本身以及将来的任何子进程。 – 2010-06-09 15:23:50