1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #36617 from Microsoft/jjh/kernel-registry

Windows: Move kernel_windows to use golang registry functions
This commit is contained in:
Vincent Demeester 2018-03-19 11:47:17 +01:00 committed by GitHub
commit 7270b01e5d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 27 deletions

View file

@ -2,9 +2,9 @@ package kernel // import "github.com/docker/docker/pkg/parsers/kernel"
import ( import (
"fmt" "fmt"
"unsafe"
"golang.org/x/sys/windows" "golang.org/x/sys/windows"
"golang.org/x/sys/windows/registry"
) )
// VersionInfo holds information about the kernel. // VersionInfo holds information about the kernel.
@ -22,41 +22,24 @@ func (k *VersionInfo) String() string {
// GetKernelVersion gets the current kernel version. // GetKernelVersion gets the current kernel version.
func GetKernelVersion() (*VersionInfo, error) { func GetKernelVersion() (*VersionInfo, error) {
var (
h windows.Handle
dwVersion uint32
err error
)
KVI := &VersionInfo{"Unknown", 0, 0, 0} KVI := &VersionInfo{"Unknown", 0, 0, 0}
if err = windows.RegOpenKeyEx(windows.HKEY_LOCAL_MACHINE, k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
windows.StringToUTF16Ptr(`SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\`), if err != nil {
0,
windows.KEY_READ,
&h); err != nil {
return KVI, err return KVI, err
} }
defer windows.RegCloseKey(h) defer k.Close()
var buf [1 << 10]uint16 blex, _, err := k.GetStringValue("BuildLabEx")
var typ uint32 if err != nil {
n := uint32(len(buf) * 2) // api expects array of bytes, not uint16
if err = windows.RegQueryValueEx(h,
windows.StringToUTF16Ptr("BuildLabEx"),
nil,
&typ,
(*byte)(unsafe.Pointer(&buf[0])),
&n); err != nil {
return KVI, err return KVI, err
} }
KVI.kvi = blex
KVI.kvi = windows.UTF16ToString(buf[:])
// Important - docker.exe MUST be manifested for this API to return // Important - docker.exe MUST be manifested for this API to return
// the correct information. // the correct information.
if dwVersion, err = windows.GetVersion(); err != nil { dwVersion, err := windows.GetVersion()
if err != nil {
return KVI, err return KVI, err
} }

View file

@ -12,7 +12,7 @@ func GetOperatingSystem() (string, error) {
// Default return value // Default return value
ret := "Unknown Operating System" ret := "Unknown Operating System"
k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\WIndows NT\CurrentVersion`, registry.QUERY_VALUE) k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
if err != nil { if err != nil {
return ret, err return ret, err
} }