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  }