繁体   English   中英

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

[英]How to get a system environmental variable that is overridden by a user environmental variable in Java?

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

你不能

System.getenv()返回启动应用程序时环境变量的值。 这些值的设置方式与JVM无关且不可访问

您必须使用JNA访问注册表

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

您还可以访问用户变量:

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

在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);  
}  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM