如何获取被Java中的用户环境变量覆盖的系统环境变量?

时间:2012-11-16 23:21:51

标签: java windows windows-7 environment-variables

在Windows 7环境中,我在System的环境变量下定义了变量VARA =“x”,并且在用户的环境变量下定义了相同的变量VARA =“y”。如何获得系统环境变量部分中定义的VARA值。我总是得到用户价值而不是系统价值。 感谢。

3 个答案:

答案 0 :(得分:3)

你做不到。

System.getenv()会在您的应用启动时返回环境变量的值。这些值的设置方式与JVM无关,无法访问

答案 1 :(得分:2)

您必须使用registry访问JNA

Advapi32Util.registryGetStringValue(WinReg.HKEY_LOCAL_MACHINE,
    "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment",
    name);

您还可以访问用户变量:

Advapi32Util.registryGetStringValue(WinReg.HKEY_CURRENT_USER,
    "Environment",
    name);

答案 2 :(得分:-1)

在Java中,您只需输入:

 String variable = System.getenv("WINDIR");  
System.out.println(variable); 

您将获得系统的环境变量。

如果要搜索所有系统的环境变量:

Map<String, String> variables = System.getenv();  

for (Map.Entry<String, String> entry : variables.entrySet())  
{  
   String name = entry.getKey();  
   String value = entry.getValue();  
   System.out.println(name + "=" + value);  
}