環境變數

每個進程都有一個環境區塊,其中包含一組環境變數及其值。 環境變數有兩種類型:針對每個使用者) (設定的使用者環境變數,以及針對每個人) 設定 (系統內容變數。

根據預設,子進程會繼承其父進程的環境變數。 命令處理器啟動的程式會繼承命令處理器的環境變數。 若要為子進程指定不同的環境,請建立新的環境區塊,並將指標當做參數傳遞至 CreateProcess 函式。

命令處理器提供 set 命令來顯示其環境區塊,或建立新的環境變數。 您也可以從主控台選取[系統]、選取 [進階系統設定],然後按一下 [環境變數],來檢視或修改環境變數

每個環境區塊都包含下列格式的環境變數:

Var1=Value1\0
Var2=Value2\0
Var3=Value3\0
...
VarN=ValueN\0\0

環境變數的名稱不能包含等號 (=) 。

GetEnvironmentStrings 函式會傳回呼叫進程環境區塊的指標。 這應該視為唯讀區塊;請勿直接修改它。 請改用 SetEnvironmentVariable 函式來變更環境變數。 當您完成從 GetEnvironmentStrings取得的環境區塊時,請呼叫 FreeEnvironmentStrings 函式以釋放區塊。

呼叫 SetEnvironmentVariable 不會影響系統內容變數。 若要以程式設計方式新增或修改系統內容變數,請將它們新增至 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 登錄機碼,然後廣播 WM_SETTINGCHANGE 訊息,並將 lParam 設定為字串 「Environment」。 這可讓殼層之類的應用程式挑選您的更新。

使用者定義環境變數的大小上限為 32,767 個字元。 環境區塊的大小沒有技術限制。 不過,根據用來存取區塊的機制,會有實際限制。 例如,批次檔無法設定超過命令列長度上限的變數。

Windows Server 2003 和 Windows XP: 進程的環境區塊大小上限為 32,767 個字元。 從 Windows Vista 和 Windows Server 2008 開始,環境區塊的大小沒有任何技術限制。

GetEnvironmentVariable函式會判斷指定的變數是否定義于呼叫進程的環境中,如果是的話,其值為何。

若要擷取指定使用者的環境區塊複本,請使用 CreateEnvironmentBlock 函式。

若要展開環境變數字串,請使用 ExpandEnvironmentStrings 函 式。

變更環境變數

使用者環境變數