访问Windows注册表

可能重复:
使用Java读/写Windows注册表

我需要从Java访问Windows注册表。此外,我需要复制一些注册表项,可能必须使用Java输入新的注册表变量..有人帮我请…

我推荐Java Native Access(JNA)库 。 它是JNI的一个非常好的包装器。 根据这个邮件列表post ,他们已经有一个围绕本机Windows注册表函数调用的贡献包装。

如果将JNA库添加到项目中, 则需要的相关源是Registry.java类 。 从那里,只需调用该类的方法来调查Windows注册表。

作为旁注,请确保在使用JNA时使用Platform.isXxx()以确保您的代码可以实际查询特定平台上的注册表。

一个例子是这样的:

import com.ice.jni.registry.*; public class DeleteEnvironmentVar{ public DeleteEnvironmentVar(String variable, String value) throws Exception { RegistryKey machine = Registry.getTopLevelKey("HKEY_LOCAL_MACHINE"); RegistryKey environment = machine.openSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", RegistryKey.ACCESS_WRITE); try { if ( value == null ) { //Delete the variable in case value is empty environment.deleteValue(variable); } } catch( NoSuchValueException nsve ) {} catch( NoSuchKeyException nske ) {} } } 

Preferences类是Java首选写入注册表的方式。 但是,我实际上并没有使用它,所以我不知道它是否允许访问整个注册表或只是一个特定于JVM或您的应用程序的部分。 如果没有,那么听起来就像你的目的,你需要看看其他人在这里提出的JNI解决方案。 如果它确实有效,那么你有一个独立于平台的方法来存储你的设置,如果你曾经移植它。