operatingsystem_windows.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package operatingsystem // import "github.com/docker/docker/pkg/parsers/operatingsystem"
  2. import (
  3. "fmt"
  4. "golang.org/x/sys/windows/registry"
  5. )
  6. // GetOperatingSystem gets the name of the current operating system.
  7. func GetOperatingSystem() (string, error) {
  8. // Default return value
  9. ret := "Unknown Operating System"
  10. k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
  11. if err != nil {
  12. return ret, err
  13. }
  14. defer k.Close()
  15. pn, _, err := k.GetStringValue("ProductName")
  16. if err != nil {
  17. return ret, err
  18. }
  19. ret = pn
  20. ri, _, err := k.GetStringValue("ReleaseId")
  21. if err != nil {
  22. return ret, err
  23. }
  24. ret = fmt.Sprintf("%s Version %s", ret, ri)
  25. cbn, _, err := k.GetStringValue("CurrentBuildNumber")
  26. if err != nil {
  27. return ret, err
  28. }
  29. ubr, _, err := k.GetIntegerValue("UBR")
  30. if err != nil {
  31. return ret, err
  32. }
  33. ret = fmt.Sprintf("%s (OS Build %s.%d)", ret, cbn, ubr)
  34. return ret, nil
  35. }
  36. // IsContainerized returns true if we are running inside a container.
  37. // No-op on Windows, always returns false.
  38. func IsContainerized() (bool, error) {
  39. return false, nil
  40. }