From 347a93a965a0ebdb9c9866f1500ecb54e0111da9 Mon Sep 17 00:00:00 2001 From: burningtnt Date: Sun, 23 Nov 2025 12:38:01 +0800 Subject: [PATCH 1/2] Fix: Fucking Windows may force working directory to system32 for unknown reasons. --- .../java/org/jackhuang/hmcl/EntryPoint.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java b/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java index 7f13f54e31..5a840be907 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java @@ -46,6 +46,23 @@ public static void main(String[] args) { System.getProperties().putIfAbsent("javafx.autoproxy.disable", "true"); System.getProperties().putIfAbsent("http.agent", "HMCL/" + Metadata.VERSION); + // Fucking Windows may force working directory to system32 for unknown reasons. + if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { + String workingDirectory = System.getProperty("user.dir"); + String windowsSystem = "C:\\WINDOWS\\system32"; + if (workingDirectory == null || ( + workingDirectory.length() >= windowsSystem.length() && workingDirectory.substring(0, windowsSystem.length()).equalsIgnoreCase(windowsSystem) + )) { + Path path = JarUtils.thisJarPath(); + if (path != null) { + Path parent = path.getParent(); + if (parent != null) { + System.setProperty("user.dir", parent.toAbsolutePath().toString()); + } + } + } + } + createHMCLDirectories(); LOG.start(Metadata.HMCL_CURRENT_DIRECTORY.resolve("logs")); From 147e900f225695a239b60366f171f2018d550e66 Mon Sep 17 00:00:00 2001 From: burningtnt Date: Sun, 23 Nov 2025 12:49:37 +0800 Subject: [PATCH 2/2] Fix: checkstyle --- HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java b/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java index 5a840be907..024fa5cf82 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/EntryPoint.java @@ -50,9 +50,7 @@ public static void main(String[] args) { if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { String workingDirectory = System.getProperty("user.dir"); String windowsSystem = "C:\\WINDOWS\\system32"; - if (workingDirectory == null || ( - workingDirectory.length() >= windowsSystem.length() && workingDirectory.substring(0, windowsSystem.length()).equalsIgnoreCase(windowsSystem) - )) { + if (workingDirectory == null || (workingDirectory.length() >= windowsSystem.length() && workingDirectory.substring(0, windowsSystem.length()).equalsIgnoreCase(windowsSystem))) { Path path = JarUtils.thisJarPath(); if (path != null) { Path parent = path.getParent();