2010-06-09 73 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