可能重复: 使用Java读写Windows注册表
我需要从Java访问Windows注册表。另外,我需要复制一些注册表项,并且可能需要使用Java输入新的注册表变量。有人来帮我..。
发布于 2009-02-25 12:41:05
我推荐Java本机访问(JNA)库。这是JNI的一个很好的包装。根据这个邮寄名单的帖子的说法,他们已经为本地Windows注册表函数调用提供了一个有贡献的包装器。
如果将JNA库添加到项目中,您需要的相关源是Registry.java类。从那里开始,只需调用该类上的方法来调查Windows注册表。
另外,请注意,当您使用JNA时,请确保您使用Platform.isXxx()来确保您的代码能够在特定平台上实际查询注册表。
发布于 2009-02-25 12:53:47
这样的例子如下:
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 ) {}
}
}发布于 2009-02-25 13:28:12
首选项类是Java首选的写入注册表的方式。但是,我并没有实际使用它,所以我不知道它是否允许访问整个注册表,或者只允许访问JVM或应用程序的特定部分。如果没有,那么听起来就像为了您的目的,您需要查看这里的其他人提供的JNI解决方案。如果它确实工作,那么您有一个独立于平台的方法来存储您的设置,如果您曾经移植它。
https://stackoverflow.com/questions/585804
复制相似问题