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

公子小白_ 2012-06-18 12:36:50
RT

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

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

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

诸位有没有好的建议。
...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
公子小白_ 2012-06-22
  • 打赏
  • 举报
回复
good idea

[Quote=引用 5 楼 的回复:]
因为操作系统不同,所以环境变量的设置也不同
LZ想通用,那就自己判断系统,针对不同的系统执行不同的代码吧
简单的判断系统,可以通过 System.getProperty("os.name") 判断

或者,提供一个shell脚本和bat脚本,分别在脚本做好设置环境变量的处理(比如shell修改profile文件,bat修改注册表),Runtime.getRuntime().exec 两个脚……
[/Quote]
MiceRice 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
就是不想修改注册表啊,有没有其他办法?
因为想使用尽量通用的办法,Linux下MS没有注册表
[/Quote]

Windows自身的机制就是注册表,所以:
要么就是直接修改注册表,要么就是借助其它工具或程序来修改注册表。


关于Linux和Windows的差异性问题,5楼说的很清楚;这是两个不同体系结构的操作系统,哪来那么多通用性。


当然也许有些第三方软件工具,可以支持在多个操作系统下操作系统环境变量,不过我没注意到过。
qybao 2012-06-21
  • 打赏
  • 举报
回复
因为操作系统不同,所以环境变量的设置也不同
LZ想通用,那就自己判断系统,针对不同的系统执行不同的代码吧
简单的判断系统,可以通过 System.getProperty("os.name") 判断

或者,提供一个shell脚本和bat脚本,分别在脚本做好设置环境变量的处理(比如shell修改profile文件,bat修改注册表),Runtime.getRuntime().exec 两个脚本都执行,系统不对应的脚本是不会被执行的,所以应该没什么影响,顶多就是runtime.exec的进程执行出错结束
brightyq 2012-06-21
  • 打赏
  • 举报
回复
window下应该要改注册表,不然JVM重起之后还是原来的。
公子小白_ 2012-06-21
  • 打赏
  • 举报
回复
就是不想修改注册表啊,有没有其他办法?
因为想使用尽量通用的办法,Linux下MS没有注册表
[Quote=引用 2 楼 的回复:]
Linux下,就是设法用Java去修改 /etc/profile 文件,把环境变量加进去。


Windwos下,基本上是修改注册表,用Runtime执行命令行:
reg add
如:添加变量NAME,值为123
reg add "HKLM\system\controlset\control\session manager\environment" /v NAME /t RE……
[/Quote]
MiceRice 2012-06-18
  • 打赏
  • 举报
回复
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)
hurricanez 2012-06-18
  • 打赏
  • 举报
回复
尝试一下其他脚本,比如python和perl

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧