package operatingsystem // import "github.com/docker/docker/pkg/parsers/operatingsystem" import ( "fmt" "golang.org/x/sys/windows/registry" ) // GetOperatingSystem gets the name of the current operating system. func GetOperatingSystem() (string, error) { // Default return value ret := "Unknown Operating System" k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) if err != nil { return ret, err } defer k.Close() pn, _, err := k.GetStringValue("ProductName") if err != nil { return ret, err } ret = pn ri, _, err := k.GetStringValue("ReleaseId") if err != nil { return ret, err } ret = fmt.Sprintf("%s Version %s", ret, ri) cbn, _, err := k.GetStringValue("CurrentBuildNumber") if err != nil { return ret, err } ubr, _, err := k.GetIntegerValue("UBR") if err != nil { return ret, err } ret = fmt.Sprintf("%s (OS Build %s.%d)", ret, cbn, ubr) return ret, nil } // IsContainerized returns true if we are running inside a container. // No-op on Windows, always returns false. func IsContainerized() (bool, error) { return false, nil }