利用java.util.prefs包操作windows注册表

利用java.util.prefs包操作windows注册表

Java 操作windows注册表,主要的API

主要接口

接口 说明
NodeChangeListener 用于接收首选项节点更改事件的侦听器。
PreferenceChangeListener 用于接收首选项节点更改事件的侦听器。
PreferencesFactory 生成Preferences对象的factory对象。

主要的类

说明
AbstractPreferences 此类提供了Preferences类的骨干实现,从而大大简化了实现此类的任务。
NodeChangeEvent Preferences节点发出的事件,用于指示已添加或移除该节点的子节点。
PreferenceChangeEvent Preference节点发出的事件,用于指示已经添加或移除首选项,或者首选项的值已被更改。
Preferences 首选项数据的层次结构 collection 中的节点。

主要异常

异常 说明
BackingStoreException 抛出该异常表明由于内部存储故障或者不能联系内部存储而无法完成preferences操作。侦听器。
InvalidPreferencesFormatException 抛出此异常表明根据Preferences规范,输入内容不符合preferences集合的正确 XML 文档类型,从而无法完成操作。

范例代码

import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

public class Test {
    public static void main(String[] args) {
        Preferences pre=Preferences.systemNodeForPackage(Test.class);
        pre.put("userName", "******");
        pre.putInt("age", 26);
        try {
            pre.flush();
        } catch (BackingStoreException e) {
            e.printStackTrace();
        }
        Preferences now=Preferences.systemNodeForPackage(Test.class);
        System.out.println(now.get("userName", "为空"));
        System.out.println(now.getInt("age", 0));
    }
}

其它

如果选的是systemNodeForPackage则保存在[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs]

如果选的是userNodeForPackage则保存在[HKEY_CURRENT_USER\Software\JavaSoft\Prefs]

存在有不少限制,如果想在注册表的自动运行的键里增加一个自己的程序。还是要用Java调用批处理来实现。

时间: 2024-10-14 08:55:22

利用java.util.prefs包操作windows注册表的相关文章

winreg操作windows注册表详解示例

#coding:utf-8 #=====================================================================#=====本程序演示了WINREG操作WINDOWS注册表的所有常见操作#=====作者:dengpeiyou QQ:86074731 2019.01.12#=====================================================================import ctypesimpo

《java.util.concurrent 包源码阅读》03 锁

Condition接口 应用场景:一个线程因为某个condition不满足被挂起,直到该Condition被满足了. 类似与Object的wait/notify,因此Condition对象应该是被多线程共享的,需要使用锁保护其状态的一致性 示例代码: class BoundedBuffer { final Lock lock = new ReentrantLock(); final Condition notFull = lock.newCondition(); final Condition

《java.util.concurrent 包源码阅读》02 关于java.util.concurrent.atomic包

Aomic数据类型有四种类型:AomicBoolean, AomicInteger, AomicLong, 和AomicReferrence(针对Object的)以及它们的数组类型, 还有一个特殊的AomicStampedReferrence,它不是AomicReferrence的子类,而是利用AomicReferrence实现的一个储存引用和Integer组的扩展类 首先,所有原子操作都是依赖于sun.misc.Unsafe这个类,这个类底层是由C++实现的,利用指针来实现数据操作 关于CAS

《java.util.concurrent 包源码阅读》11 线程池系列之ThreadPoolExecutor 第一部分

先来看ThreadPoolExecutor的execute方法,这个方法能体现出一个Task被加入到线程池之后都发生了什么: public void execute(Runnable command) { if (command == null) throw new NullPointerException(); /* 如果运行中的worker线程数少于设定的常驻线程数,增加worker线程,把task分配给新建的worker线程 */ int c = ctl.get(); if (worker

【转】Predicate和Consumer接口– Java 8中java.util.function包下的接口

原文链接 http://ifeve.com/predicate-and-consumer-interface-in-java-util-function-package-in-java-8/ 原文链接 作者:   Mohamed Sanaulla  译者: 李璟([email protected]) 早先我写了一篇<函数式接口>,探讨了部分Java 8中函数式接口的用法.我也提及了Predicate接口属于java.util.function包, 在这篇文章中,我将展示如何应用Predicat

java架构 [Java 基础] 使用java.util.zip包压缩和解压缩文件

Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile java中的每一个压缩文件都是可以使用ZipFile来进行表示的. File file = new File("F:/zippath.zip"); ZipFile zipFile = new ZipFile(file); System.out.println("压缩文

[Java 基础] 使用java.util.zip包压缩和解压缩文件

reference :  http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile java中的每一个压缩文件都是可以使用ZipFile来进行表示的. File file = new File("F:/zippath.zip&quo

《java.util.concurrent 包源码阅读》06 ArrayBlockingQueue

对于BlockingQueue的具体实现,主要关注的有两点:线程安全的实现和阻塞操作的实现.所以分析ArrayBlockingQueue也是基于这两点. 对于线程安全来说,所有的添加元素的方法和拿走元素的方法都会涉及到,我们通过分析offer方法和poll()方法就能看出线程安全是如何实现的. 首先来看offer方法 public boolean offer(E e) { checkNotNull(e); final ReentrantLock lock = this.lock; lock.lo

java.util.concurrent包

在JavaSE5中,JUC(java.util.concurrent)包出现了 在java.util.concurrent包及其子包中,有了很多好玩的新东西: 1.执行器的概念和线程池的实现.Executor.ExecutorService框架 从Executor接口开始,到ExecutorService,再到很多基于ThreadPoolExecutor实现的具体执行器.执行器实际上是采用了一种叫做命令模式的设计,将任务Runnable和具体执行线程相分离,并给出了生命周期等管理方法,一般只要e