java 使用Preferences操作注册表
使用java操作windows注册表,有两种方式:
-
使用java自带的Preferences类。
- 优点:在使用了网上找的大神写的操作类,就可以轻松的对注册表进行增删改查!
- 缺点:操作注册表范围有限;(但使用了大神写的操作类,就可以解决这个问题了。)
Preferences.userRoot()的操作路径在[HKEY_CURRENT_USER\Software\JavaSoft\Prefs]
Preferences.systemRoot()的操作路径在[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs]
-
使用jni的jRegistryKey.jar。
- 优点:操作灵活,可获取任意路径的key,value
- 缺点:目前只支持32位系统,64位系统无法使用!
Demo:
-
Preferences的demo:
因为引用了其他大神写的java util类,所以需下载此文件并解压,然后将WinRegistry.java引用到项目中。以下是使用此类的测试Demo
一:获取指定节点下key的value
1 public static String getKeyValue(){
2 //获取指定节点下key的value
3 String value = null;
4 try {
5 value = WinRegistry.readString(WinRegistry.HKEY_CURRENT_USER,
6 "SOFTWARE\\Microsoft\\Internet Explorer\\Main", "Default Download Directory");
7 } catch (IllegalArgumentException e) {
8 // TODO 自动生成的 catch 块
9 e.printStackTrace();
10 } catch (IllegalAccessException e) {
11 // TODO 自动生成的 catch 块
12 e.printStackTrace();
13 } catch (InvocationTargetException e) {
14 // TODO 自动生成的 catch 块
15 e.printStackTrace();
16 }
17 System.out.println("Windows Distribution = " + value);
18 return value;
19 }
二:修改指定key的value值
1 public static String writeKeyValue(){
2 String File = "E:/";
3 try {
4 WinRegistry.writeStringValue(WinRegistry.HKEY_CURRENT_USER,
5 "SOFTWARE\\Microsoft\\Internet Explorer\\Main", "Default Download Directory", File);
6 } catch (IllegalArgumentException e) {
7 // TODO 自动生成的 catch 块
8 e.printStackTrace();
9 } catch (IllegalAccessException e) {
10 // TODO 自动生成的 catch 块
11 e.printStackTrace();
12 } catch (InvocationTargetException e) {
13 // TODO 自动生成的 catch 块
14 e.printStackTrace();
15 }
16 return File;
17 }
因为我测试的是ie浏览器的默认路径修改,所以这个value给的是路径,可根据实际情况就行修改!
另:win10下的ie默认路径与win7下的默认路径不同(注册表路径)
win10: 路径:HKEY_CURRENT_USER/SOFTWARE\\Microsoft\\Internet Explorer\\Main; value:Default Download Directory
win7: 路径:HKEY_CURRENT_USER/SOFTWARE\\Microsoft\\Internet Explorer; value:Download Directory
- 因为此jRegistryKey.jar包不适用于64位系统,所以并没有写出想要的demo。
但如果在使用此jar包的情况下,提示no jRegistryKey.dll in java.library.path,可以使用System.out.println(System.getProperty("java.library.path"));
输出"java.library.path"包含的路径,然后将下载下来的jRegistryKey.zip解压,就会看到对应的dll和jar。将dll文件放入包含的路径内,如果重新运行还是报错,那么就需要重启电脑。
大神的文件引用至:http://blog.csdn.net/a8_8a/article/details/41790083
15:09:12 2017-03-14


浙公网安备 33010602011771号