我在这里编写了几个方法,它们从注册表中读取一些值并在我的 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上提供的教程从注册表中检索数据的方法似乎不起作用。写入功能工作正常,但即使使用他们提供的示例,阅读部分也不起作用。我将联系开发人员并尝试在那里获得一些帮助。