繁体   English   中英

如何使用Java编写Windows注册表?

[英]How to write windows registry using Java?

我对使用Preference Class不太了解。 但是,通过在这里和其他网站上阅读,我觉得我所拥有的应该足以写入我选择的节点。

Preferences userPref = Preferences.userRoot();
    userPref = userPref.node("HKEY_CURRENT_USER\\Software\\Broadcom");
    userPref.put("A", "B");

尝试写入节点“ HKEY_CURRENT_USER \\ Software \\ Broadcom”时,只会写入JavaSoft节点。 无论如何,有没有要更改子项以允许我写入我想要的任何节点的方法?

PS我曾尝试以不同的方式多次写入访问位置。 用正斜杠代替反斜杠,在“ HKEY”前面用斜杠,等等。

有人有想法么?

这里下载jna库。 将jna-4.1.0.jar和jna-platform-4.1.0.jar文件添加到您的应用程序类路径。 并使用Advapi32Util实用程序类读取,写入或删除注册密钥。 我测试了一些解决方案,但大多数都不起作用。 但是jna版本的效果很好,并且具有很多功能。

这是我的测试代码,用于更新Chromium lastrun值。

import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.WinReg;

public class Main {

    public static void main(String[] args) throws Exception {
        Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, "Software\\Chromium", "lastrun", "13031598735788802");
    }
}

首选项API不一定完全提供对注册表的访问。 某些实现可能使用注册表,但是您不能指望它。 而且,如果实现确实使用注册表,则“首选项”层次结构的根目录可能位于“ HKEY_CURRENT_USER \\ Software \\ Java”或类似的目录下,并且您将无法访问该树之外的任何内容。

通常,如果您的问题采用“如何在Java中使用[特定于平台的功能]?”的形式,则答案为“使用JNI”或“不使用Java”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM