From d347b0c6cb1bf0d4d6973c7e82057313bdc37052 Mon Sep 17 00:00:00 2001 From: Glavo Date: Tue, 20 May 2025 13:33:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=A3=80=E6=B5=8B=20(#3924)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmcl/util/platform/OperatingSystem.java | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java index 69f5a3263..8919f92bc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java @@ -119,6 +119,8 @@ public enum OperatingSystem { private static final String[] INVALID_RESOURCE_BASENAMES; private static final String[] INVALID_RESOURCE_FULLNAMES; + private static final boolean IS_WINDOWS_7_OR_LATER; + static { String nativeEncoding = System.getProperty("native.encoding"); String hmclNativeEncoding = System.getProperty("hmcl.native.encoding"); @@ -183,6 +185,23 @@ public enum OperatingSystem { if (versionNumber == null) versionNumber = System.getProperty("os.version"); + int major; + int dotIndex = versionNumber.indexOf('.'); + try { + if (dotIndex < 0) + major = Integer.parseInt(versionNumber); + else + major = Integer.parseInt(versionNumber.substring(0, dotIndex)); + } catch (NumberFormatException ignored) { + major = -1; + } + + // Windows XP: NT 5.1~5.2 + // Windows Vista: NT 6.0 + // Windows 7: NT 6.1 + + IS_WINDOWS_7_OR_LATER = major >= 6 && !versionNumber.startsWith("6.0"); + // Get Code Page if (kernel32 != null) @@ -218,6 +237,7 @@ public enum OperatingSystem { SYSTEM_VERSION = System.getProperty("os.version"); SYSTEM_BUILD_NUMBER = -1; CODE_PAGE = -1; + IS_WINDOWS_7_OR_LATER = false; } Map osRelease = Collections.emptyMap(); @@ -273,27 +293,7 @@ public enum OperatingSystem { } public static boolean isWindows7OrLater() { - if (CURRENT_OS != WINDOWS) { - return false; - } - - int major; - int dotIndex = SYSTEM_VERSION.indexOf('.'); - try { - if (dotIndex < 0) { - major = Integer.parseInt(SYSTEM_VERSION); - } else { - major = Integer.parseInt(SYSTEM_VERSION.substring(0, dotIndex)); - } - } catch (NumberFormatException ignored) { - return false; - } - - // Windows XP: NT 5.1~5.2 - // Windows Vista: NT 6.0 - // Windows 7: NT 6.1 - - return major >= 6 && !SYSTEM_VERSION.startsWith("6.0"); + return IS_WINDOWS_7_OR_LATER; } @SuppressWarnings("removal")