java操作注册表

 

使用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(增删改查):
import java.util.prefs.Preferences;

public class PreferencesOperationExample {

    public static void main(String[] args) {
        // 获取用户偏好节点
        Preferences userPrefs = Preferences.userRoot().node("myAppPreferences");

        // 增加偏好设置
        addPreference(userPrefs);

        // 查询偏好设置
        queryPreference(userPrefs);

        // 修改偏好设置
        modifyPreference(userPrefs);

        // 查询修改后的偏好设置
        queryPreference(userPrefs);

        // 删除偏好设置
        deletePreference(userPrefs);

        // 查询已删除的偏好设置(应返回默认值)
        queryPreference(userPrefs);
    }

    public static void addPreference(Preferences prefs) {
        // 存储用户名
        prefs.put("username", "John");
        // 存储用户年龄
        prefs.putInt("age", 30);
        // 存储用户是否已婚
        prefs.putBoolean("isMarried", false);
    }

    public static void queryPreference(Preferences prefs) {
        // 获取用户名
        String username = prefs.get("username", "Not Found");
        // 获取用户年龄
        int age = prefs.getInt("age", -1);
        // 获取用户婚姻状态
        boolean isMarried = prefs.getBoolean("isMarried", true);

        System.out.println("Username: " + username);
        System.out.println("Age: " + age);
        System.out.println("Is Married: " + isMarried);
    }

    public static void modifyPreference(Preferences prefs) {
        // 修改用户名
        prefs.put("username", "Jane");
        // 修改用户年龄
        prefs.putInt("age", 25);
        // 修改用户婚姻状态
        prefs.putBoolean("isMarried", true);
    }

    public static void deletePreference(Preferences prefs) {
        prefs.remove("username");
        prefs.remove("age");
        prefs.remove("isMarried");
    }
}
2、jRegistryKey.jar的demo(增删改查)
import de.schlichtherle.registry.RegistryKey;
import de.schlichtherle.registry.RegistryValueNotFoundException;

public class RegistryOperationExample {

    public static void main(String[] args) {
        // 操作 HKEY_CURRENT_USER 下的指定路径
        String registryPath = "Software\\MyApp";

        try {
            RegistryKey key = RegistryKey.getRootKey().openSubKey(RegistryKey.HKEY_CURRENT_USER, registryPath);

            // 增加一个值
            addValue(key);

            // 查询值
            queryValue(key);

            // 修改值
            modifyValue(key);

            // 查询修改后的值
            queryValue(key);

            // 删除值
            deleteValue(key);

            // 查询已删除的值(应抛出异常)
            queryValue(key);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void addValue(RegistryKey key) throws Exception {
        key.setValue("UserName", "John");
        key.setValue("UserAge", 30);
    }

    public static void queryValue(RegistryKey key) throws RegistryValueNotFoundException {
        String userName = (String) key.getValue("UserName");
        int userAge = (int) key.getValue("UserAge");
        System.out.println("UserName: " + userName);
        System.out.println("UserAge: " + userAge);
    }

    public static void modifyValue(RegistryKey key) throws Exception {
        key.setValue("UserName", "Jane");
        key.setValue("UserAge", 25);
    }

    public static void deleteValue(RegistryKey key) throws Exception {
        key.deleteValue("UserName");
        key.deleteValue("UserAge");
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值