From 442940cf05716557726017c935f44e0cd2d94d9a Mon Sep 17 00:00:00 2001 From: octopus_yan Date: Mon, 16 Sep 2024 00:53:21 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E5=BC=80=E6=9C=BA=E8=87=AA=E5=90=AF?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=89=A7=E8=A1=8Ccmd=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 --- .../alistgui/controller/SetupController.java | 15 ---- .../cn/octopusyan/alistgui/util/Registry.java | 80 +++++++++++++++++++ .../alistgui/viewModel/SetupViewModel.java | 15 +++- src/main/java/module-info.java | 1 - 5 files changed, 94 insertions(+), 28 deletions(-) create mode 100644 src/main/java/cn/octopusyan/alistgui/util/Registry.java diff --git a/pom.xml b/pom.xml index a247c54..5f1136f 100644 --- a/pom.xml +++ b/pom.xml @@ -94,17 +94,6 @@ ${common-exec.version} - - net.java.dev.jna - jna - ${jna.version} - - - net.java.dev.jna - jna-platform - ${jna.version} - - cn.hutool diff --git a/src/main/java/cn/octopusyan/alistgui/controller/SetupController.java b/src/main/java/cn/octopusyan/alistgui/controller/SetupController.java index cff3d22..67847f3 100644 --- a/src/main/java/cn/octopusyan/alistgui/controller/SetupController.java +++ b/src/main/java/cn/octopusyan/alistgui/controller/SetupController.java @@ -2,13 +2,10 @@ package cn.octopusyan.alistgui.controller; import atlantafx.base.theme.Theme; import cn.octopusyan.alistgui.base.BaseController; -import cn.octopusyan.alistgui.config.Constants; import cn.octopusyan.alistgui.config.Context; import cn.octopusyan.alistgui.enums.ProxySetup; import cn.octopusyan.alistgui.manager.ConfigManager; import cn.octopusyan.alistgui.viewModel.SetupViewModel; -import com.sun.jna.platform.win32.Advapi32Util; -import com.sun.jna.platform.win32.WinReg; import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -101,18 +98,6 @@ public class SetupController extends BaseController implements I viewModel.languageProperty().bind(languageComboBox.getSelectionModel().selectedItemProperty()); viewModel.themeProperty().bind(themeComboBox.getSelectionModel().selectedItemProperty()); viewModel.proxySetupProperty().bind(proxySetupComboBox.getSelectionModel().selectedItemProperty()); - - autoStartCheckBox.selectedProperty().addListener((_, _, checked) -> { - try { - if (checked) { - Advapi32Util.registrySetStringValue(WinReg.HKEY_CURRENT_USER, Constants.REG_AUTO_RUN, Constants.APP_TITLE, Constants.APP_EXE); - } else { - Advapi32Util.registryDeleteValue(WinReg.HKEY_CURRENT_USER, Constants.REG_AUTO_RUN, Constants.APP_TITLE); - } - } catch (Throwable e) { - logger.error("", e); - } - }); } @FXML diff --git a/src/main/java/cn/octopusyan/alistgui/util/Registry.java b/src/main/java/cn/octopusyan/alistgui/util/Registry.java new file mode 100644 index 0000000..33135ba --- /dev/null +++ b/src/main/java/cn/octopusyan/alistgui/util/Registry.java @@ -0,0 +1,80 @@ +package cn.octopusyan.alistgui.util; + +/** + * 注册表编辑 + * + * @author octopus_yan + */ +public class Registry { + private static final ProcessesUtil util = ProcessesUtil.init("."); + + public static void setStringValue(Root root, String keyPath, String name, String value) { + setValue(root, keyPath, name, DataType.REG_SZ, value); + } + + public static void deleteValue(Root root, String keyPath, String name) { + name = handleSpaces(name); + util.exec(STR."reg \{Operation.DELETE} \{root.path}\\\{keyPath} /v \{name} /f"); + } + + public static void setValue(Root root, String keyPath, String name, DataType type, String value) { + name = handleSpaces(name); + value = handleSpaces(value); + util.exec(STR.""" + reg \{Operation.ADD} \{root.path}\\\{keyPath} /v \{name} /t \{type} /d \{value} + """); + } + + private static String handleSpaces(String str) { + if (str.contains(" ")) + str = STR."\"\{str}\""; + return str; + } + + public enum Operation { + ADD, + COMPARE, + COPY, + DELETE, + EXPORT, + IMPORT, + LOAD, + QUERY, + RESTORE, + SAVE, + UNLOAD, + ; + } + + public enum Root { + HKCR("HKEY_CLASSES_ROOT"), + HKCU("HKEY_CURRENT_USER"), + HKLM("HKEY_LOCAL_MACHINE"), + HKU("HKEY_USERS"), + HKCC("HKEY_CURRENT_CONFIG"), + ; + + private final String path; + + Root(String path) { + this.path = path; + } + + public String getPath() { + return path; + } + } + + public enum DataType { + REG_SZ, + REG_MULTI_SZ, + REG_DWORD_BIG_ENDIAN, + REG_DWORD, + REG_BINARY, + REG_DWORD_LITTLE_ENDIAN, + REG_LINK, + REG_FULL_RESOURCE_DESCRIPTOR, + REG_EXPAND_SZ, + ; + } +} diff --git a/src/main/java/cn/octopusyan/alistgui/viewModel/SetupViewModel.java b/src/main/java/cn/octopusyan/alistgui/viewModel/SetupViewModel.java index 4f58c53..c563c57 100644 --- a/src/main/java/cn/octopusyan/alistgui/viewModel/SetupViewModel.java +++ b/src/main/java/cn/octopusyan/alistgui/viewModel/SetupViewModel.java @@ -2,12 +2,14 @@ package cn.octopusyan.alistgui.viewModel; import atlantafx.base.theme.Theme; import cn.octopusyan.alistgui.base.BaseViewModel; +import cn.octopusyan.alistgui.config.Constants; import cn.octopusyan.alistgui.config.Context; import cn.octopusyan.alistgui.enums.ProxySetup; import cn.octopusyan.alistgui.manager.ConfigManager; import cn.octopusyan.alistgui.manager.http.HttpUtil; import cn.octopusyan.alistgui.task.ProxyCheckTask; import cn.octopusyan.alistgui.task.listener.TaskListener; +import cn.octopusyan.alistgui.util.Registry; import cn.octopusyan.alistgui.view.alert.AlertUtil; import javafx.beans.property.*; import lombok.extern.slf4j.Slf4j; @@ -35,8 +37,19 @@ public class SetupViewModel extends BaseViewModel { public SetupViewModel() { theme.bindBidirectional(Context.themeProperty()); theme.addListener((_, _, newValue) -> ConfigManager.theme(newValue)); - autoStart.addListener((_, _, newValue) -> ConfigManager.autoStart(newValue)); silentStartup.addListener((_, _, newValue) -> ConfigManager.silentStartup(newValue)); + autoStart.addListener((_, _, newValue) -> { + try { + if (newValue) { + Registry.setStringValue(Registry.Root.HKCU, Constants.REG_AUTO_RUN, Constants.APP_TITLE, Constants.APP_EXE); + } else { + Registry.deleteValue(Registry.Root.HKCU, Constants.REG_AUTO_RUN, Constants.APP_TITLE); + } + } catch (Throwable e) { + log.error("", e); + } + ConfigManager.autoStart(newValue); + }); proxySetup.addListener((_, _, newValue) -> ConfigManager.proxySetup(newValue)); proxyTestUrl.addListener((_, _, newValue) -> ConfigManager.proxyTestUrl(newValue)); proxyHost.addListener((_, _, newValue) -> ConfigManager.proxyHost(newValue)); diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index cc28cfb..f43f846 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,6 +1,5 @@ module cn.octopusyan.alistgui { requires java.net.http; - requires com.sun.jna.platform; requires javafx.controls; requires javafx.fxml; requires javafx.graphics;