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"));

}

これが2番目のものです(クラス「スクリプト」にあります):

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