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;