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