[英]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.