我正在尝试在java中获取用户环境变量。
System.getEnv()
方法仅返回系统环境变量。
有人知道如何获取用户环境变量吗?
答案 0 :(得分:7)
运行流程时,只有一个环境。用户变量合并到系统变量中,并覆盖现有变量。然后通过System.getenv()
方法检索此完整环境。
所以你实际上看到了用户的环境变量。
我刚用这四种情况对其进行了测试:
1)没有名为MYVAR
的变量:
正在运行System.out.println(System.getenv("MYVAR"))
打印出null
。
2)名为MYVAR
的系统变量,其值为System
:
正在运行System.out.println(System.getenv("MYVAR"))
打印出System
。
3)名为MYVAR
的用户变量,其值为User
:
正在运行System.out.println(System.getenv("MYVAR"))
打印出User
。
4)名为MYVAR
的系统变量,其值为System
,用户变量名为MYVAR
且值为User
:
正在运行System.out.println(System.getenv("MYVAR"))
打印出User
。
也许您是从IDE(如Eclipse)中尝试过的?更改环境变量时,遗憾的是必须重新启动Eclipse,因为它们未正确传播到运行配置。
答案 1 :(得分:1)
System.getenv(String)是正确的方法;只有"环境变量" - Windows应用"系统"环境变量适用于每个人的帐户,但它们在应用程序级别上无法区分。您可以通过打开cmd
提示并执行set
(不带参数)进行验证。
答案 2 :(得分:0)
通过读取路径中的注册表项,可以获得USER环境变量的值:HKEY_CURRENT_USER\\Environment
在这里您将找到所有添加的USER环境变量。
,对于SYSTEM环境变量,您可以在路径中读取:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment