java 使用Preferences操作注册表

使用java操作windows注册表,有两种方式:

  1. 使用java自带的Preferences类。

    1. 优点:在使用了网上找的大神写的操作类,就可以轻松的对注册表进行增删改查!
    2. 缺点:操作注册表范围有限;(但使用了大神写的操作类,就可以解决这个问题了。)

          Preferences.userRoot()的操作路径在[HKEY_CURRENT_USER\Software\JavaSoft\Prefs]

          Preferences.systemRoot()的操作路径在[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs]

  1. 使用jni的jRegistryKey.jar。

    1. 优点:操作灵活,可获取任意路径的key,value
    2. 缺点:目前只支持32位系统,64位系统无法使用!

  Demo:

  1. 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     }
View Code

 

    二:修改指定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     }
View Code

  因为我测试的是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

    1. 因为此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

posted @ 2017-03-14 15:16  毁爱女王  阅读(615)  评论(0)    收藏  举报