fix: Windows 11 版本识别

This commit is contained in:
Akizon77
2025-05-25 00:54:08 +08:00
parent ae783daf80
commit 4cd8626d35

View File

@@ -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
}