osinfo_windows.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Unless explicitly stated otherwise all files in this repository are licensed
  2. // under the Apache License Version 2.0.
  3. // This product includes software developed at Datadog (https://www.datadoghq.com/).
  4. // Copyright 2016 Datadog, Inc.
  5. package osinfo
  6. import (
  7. "fmt"
  8. "runtime"
  9. "strings"
  10. "golang.org/x/sys/windows/registry"
  11. )
  12. func osName() string {
  13. return runtime.GOOS
  14. }
  15. func osVersion() string {
  16. k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
  17. if err != nil {
  18. return "unknown"
  19. }
  20. defer k.Close()
  21. var version strings.Builder
  22. maj, _, err := k.GetIntegerValue("CurrentMajorVersionNumber")
  23. if err == nil {
  24. version.WriteString(fmt.Sprintf("%d", maj))
  25. min, _, err := k.GetIntegerValue("CurrentMinorVersionNumber")
  26. if err == nil {
  27. version.WriteString(fmt.Sprintf(".%d", min))
  28. }
  29. } else {
  30. version.WriteString("unknown")
  31. }
  32. ed, _, err := k.GetStringValue("EditionID")
  33. if err == nil {
  34. version.WriteString(" " + ed)
  35. } else {
  36. version.WriteString(" Unknown Edition")
  37. }
  38. build, _, err := k.GetStringValue("CurrentBuild")
  39. if err == nil {
  40. version.WriteString(" Build " + build)
  41. } else {
  42. version.WriteString(" Unknown Build")
  43. }
  44. return version.String()
  45. }