日期:2014-05-20  浏览次数:21001 次

[求助]如何用程序修改系统的环境变量?
RT

项目需要做一个小工具,可以通过程序修改系统环境变量(windows和linux)。

如果单独使用shell控制台的set命令,设置无法永久生效。

不能使用直接修改注册表的方法。

诸位有没有好的建议。

------解决方案--------------------
尝试一下其他脚本,比如python和perl
------解决方案--------------------
Linux下,就是设法用Java去修改 /etc/profile 文件,把环境变量加进去。


Windwos下,基本上是修改注册表,用Runtime执行命令行:
reg add 
如:添加变量NAME,值为123
reg add "HKLM\system\controlset\control\session manager\environment" /v NAME /t REG_SZ /d 123


Win7下面,提供了一个命令行(也要用Runtime执行):
SETX Variable Value [-m]
其中-m表示为系统级(Machine environment, HKLM),默认为用户级(User, HKCU)
------解决方案--------------------
因为操作系统不同,所以环境变量的设置也不同
LZ想通用,那就自己判断系统,针对不同的系统执行不同的代码吧
简单的判断系统,可以通过 System.getProperty("os.name") 判断

或者,提供一个shell脚本和bat脚本,分别在脚本做好设置环境变量的处理(比如shell修改profile文件,bat修改注册表),Runtime.getRuntime().exec 两个脚本都执行,系统不对应的脚本是不会被执行的,所以应该没什么影响,顶多就是runtime.exec的进程执行出错结束