本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
read/write to Windows Registry using Java
我需要从Java访问Windows注册表。我还需要复制一些注册表项,并且可能必须使用Java输入新的注册表变量。
有人帮我...
我建议使用Java Native Access(JNA)库。这是JNI的一个很好的包装器。根据此邮件列表帖子,他们已经获得了有关本机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解决方案。如果它确实起作用,那么如果您移植了它,则可以使用一种独立于平台的方法来保存您的设置。
仅允许您的应用程序具有唯一的特定部分。
首选项在Windows系统上使用注册表的事实只是实现细节-首选项不是注册表API。