ここでは、レジストリからいくつかの値を読み取り、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で提供したチュートリアルを使用してレジストリからデータを取得する方法が機能しないようです。書き込み機能は正常に機能しますが、提供された例を使用しても読み取り部分は機能しません。開発者に連絡して、そこで助けを得ようとします。