Windows環境變數PATH長度限制

某天同事和我說,測試系統怪怪的,在命令提示字元中輸入ipconfig之類的指令都會出現找不到的錯誤訊息。我聽到就想到要檢查環境變數,沒想到連環境變數視窗都無法打開:

接著我直接到windows system32找執行檔:

執行後發現一堆環境變數消失了:

會發生這個問題,可能與我們的程式有修改環境變數有關。於是我推測是Path長度影響的,所以我實驗將長度改到大於2048後,就會出現command找不到的問題,但此時還不會有環境變數消失的問題;接著我就把長度改到4096之後,就發生環境變數消失的問題了。

後來根據這個現象找到這篇文章,得知長度過長會讓windows產生不正常的現象。

最後透過registry將PATH中,不必要的東西改掉就回復正常了。