0

我在这里编写了几个方法,它们从注册表中读取一些值并在我的 Swing GUI 中填充一些文本字段。

这是第一种方法:

public void loadRegValues() throws IOException {

    Scripts sc = new Scripts();

    //SET CONFIGURATION TAB TO COME FORWARD             
    setTabFolderSelection(1);

    //SET PREBACKUP AS FIRST SELECTED TAB
    setConfigTabFolderSelection(0);

    // [GLOBAL]
    setClientnameText(sc.readValueFromReg("[GLOBAL]", "clientname"));

    // [PREBACKUP]
    Boolean prebackupboolean = Boolean.valueOf(sc.readValueFromReg("[PREBACKUP]", "prebackup-enabled"));
    setPrebackupenabledSelection(prebackupboolean);

    // [OPENVPN]
    setOvpnprofileText(sc.readValueFromReg("[OPENVPN]", "ovpnprofilename"));

    setOpenvpngatewayipText(sc.readValueFromReg("[OPENVPN]", "remotegatewayip"));

    // [NETWORK DRIVE]
    setNetworkdriveletterText(sc.readValueFromReg("[NETWORK DRIVE]", "drive-letter"));

    setIpofshareText(sc.readValueFromReg("[NETWORK DRIVE]", "ipofshare"));

    setSharenameText(sc.readValueFromReg("[NETWORK DRIVE]", "sharename"));

    setShareusernameText(sc.readValueFromReg("[NETWORK DRIVE]", "shareusername"));

    setSharepasswordText(sc.readValueFromReg("[NETWORK DRIVE]", "sharepassword"));

    // [REGISTRY BACKUP]
    Boolean registrybackupboolean = Boolean.valueOf(sc.readValueFromReg("[REGISTRY BACKUP]", "registrybackup-enabled"));
    setRegistrybackupenabledSelection(registrybackupboolean);

    Boolean reghklmsoftwareboolean = Boolean.valueOf(sc.readValueFromReg("[REGISTRY BACKUP]", "hklm-software-enabled"));
    setHklmsoftwareenabledSelection(reghklmsoftwareboolean);

    Boolean regbackupcustompathboolean = Boolean.valueOf(sc.readValueFromReg("[REGISTRY BACKUP]", "reg-custompath-enabled"));
    setRegistrycustompathenabledSelection(regbackupcustompathboolean);

    setRegistrycustompathText(sc.readValueFromReg("[REGISTRY BACKUP]", "reg-custom-path"));

    // [FREEFILESYNC]

    setFfsbatchfilenameText(sc.readValueFromReg("[FREEFILESYNC]", "ffsbatchfile"));

    // [EMAIL]
    Boolean emailboolean = Boolean.valueOf(sc.readValueFromReg("[EMAIL]", "emailenabled"));
    setEmailenabledSelection(emailboolean);

    setGmailusernameText(sc.readValueFromReg("[EMAIL]", "gmailusername"));

    setGmailpasswordText(sc.readValueFromReg("[EMAIL]", "gmailpassword"));

    setClientemailText(sc.readValueFromReg("[EMAIL]", "clientemail"));

}

这是第二个(它在“脚本”类中):

public String readValueFromReg(String valuecategory, String keyname) throws IOException
    {
        Reg reg = new Reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\KCBS\\Offsite Backup\\");
        Reg.Key cp = reg.get("HKEY_LOCAL_MACHINE\\SOFTWARE\\KCBS\\Offsite Backup\\");
        Reg.Key valuecat = cp.getChild(valuecategory);
        String keyvalue = valuecat.get(keyname);
        return keyvalue;
   }

每当我运行loadRegValues()它时,我的应用程序都会崩溃。我正在使用 ini4j API 从注册表中读取和写入;我无法弄清楚为什么它会导致它崩溃。

编辑:根据进一步的发现,使用开发人员在此页面http://ini4j.sourceforge.net/tutorial/WindowsRegistryTutorial.java.html上提供的教程从注册表中检索数据的方法似乎不起作用。写入功能工作正常,但即使使用他们提供的示例,阅读部分也不起作用。我将联系开发人员并尝试在那里获得一些帮助。

4

0 回答 0