![](/img/trans.png)
[英]How can I define environment variables for a Java project in NetBeans?
[英]How do I persistently define environment variables in Java on Windows?
有沒有辦法使用Java更改Windows環境變量? 我嘗試使用cmd函數set
:
Process exec = Runtime.getRuntime().exec(new String[] {
"cmd", "/c", "set", "HTTP_PROXY=" + PROXY_URL
});
if (exec.waitFor() != 0) {
throw new IllegalStateException("Output: "
+ getText(exec.getInputStream())
+ "Error: " + getText(exec.getErrorStream()
+ "\n"
+ "Exit value: " + exec.exitValue());
}
這段代碼運行正常,沒有任何錯誤,但是當我以后檢查系統變量時,沒有任何改變。
我正在嘗試更新HTTP_PROXY
以便在HTTP代理后面運行的其他軟件可以使用它。
在由名稱/值對組成的環境中啟動流程。 當程序寫入一個env變量時,它可以選擇使子進程可見該寫入,但是當您檢查該值時,很可能使用了無法訪問Java環境的另一個進程(可能通過cmd.exe運行)。程序。
我不知道您的代碼的目的是否是以持久的方式定義環境變量,但是如果是這樣的話,那么如果沒有特定的OS工具和平台無關的方式,就無法在Java中完成。
環境變量的默認值必須由系統工具存儲在由相同的系統工具從中讀取的地方。 在Linux上,用戶主目錄中有.profile
和.bashrc
類的文件,而在Windows上,則具有注冊表。 例如,在Windows 7上,我具有:我的PATH
默認值存儲在\\HKEY_CURRENT_USER\\Environment
-因此,您必須找到一種寫入系統注冊表的方法,例如reg
命令
REG ADD
命令允許用戶向注冊表添加新的鍵和值。 要顯示可以使用的完整參數范圍,請在命令行中鍵入以下內容:reg add /?
要在遠程計算機PC2上添加密鑰
HKLM\\Software\\MyNewApp
,請鍵入:REG ADD \\\\PC2\\HKLM\\Software\\MyNewApp
要將注冊表項添加到
HKLM\\Software\\MyNewApp
,其值名為Data
的類型為REG_BINARY
,數據為fe340ead
,請輸入:REG ADD HKLM\\Software\\MyNewApp /v Data /t REG_BINARY /d fe340ead
您可以編寫.bat
腳本,也可以從Java程序調用reg
。 您可能需要管理員權限並重新啟動某些程序(最終是整個計算機)才能使更新生效(例如,重新啟動explorer.exe)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.