From 4cd8626d35375a2cee6de204771fb598beb8372c Mon Sep 17 00:00:00 2001 From: Akizon77 Date: Sun, 25 May 2025 00:54:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=20Windows=2011=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- monitoring/unit/os_windows.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/monitoring/unit/os_windows.go b/monitoring/unit/os_windows.go index c3e9897..68c3b43 100644 --- a/monitoring/unit/os_windows.go +++ b/monitoring/unit/os_windows.go @@ -4,6 +4,9 @@ package monitoring import ( + "strconv" + "strings" + "golang.org/x/sys/windows/registry" ) @@ -19,5 +22,25 @@ func OSName() string { return "Microsoft Windows" } + // Windows 11 + majorVersion, _, err := key.GetIntegerValue("CurrentMajorVersionNumber") + if err == nil && majorVersion >= 10 { + buildNumberStr, _, err := key.GetStringValue("CurrentBuild") + if err == nil { + buildNumber, err := strconv.Atoi(buildNumberStr) + if err == nil && buildNumber >= 22000 { // Windows 11 starts at build 22000 + // Windows 11 Windows 10 Pro for Workstations + edition := strings.Replace(productName, "Windows 10 ", "", 1) + return "Windows 11 " + edition + } + } + // DisplayVersion + displayVersion, _, err := key.GetStringValue("DisplayVersion") + if err == nil && displayVersion >= "21H2" { + edition := strings.Replace(productName, "Windows 10 ", "", 1) + return "Windows 11 " + edition + } + } + return productName }