github.com/elastic/gosigar@v0.14.3/sys/windows/version.go (about) 1 // +build windows 2 3 package windows 4 5 import ( 6 "fmt" 7 "syscall" 8 ) 9 10 // Version identifies a Windows version by major, minor, and build number. 11 type Version struct { 12 Major int 13 Minor int 14 Build int 15 } 16 17 // GetWindowsVersion returns the Windows version information. Applications not 18 // manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version 19 // value (6.2). 20 // 21 // For a table of version numbers see: 22 // https://msdn.microsoft.com/en-us/library/windows/desktop/ms724833(v=vs.85).aspx 23 func GetWindowsVersion() Version { 24 // https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx 25 ver, err := syscall.GetVersion() 26 if err != nil { 27 // GetVersion should never return an error. 28 panic(fmt.Errorf("GetVersion failed: %v", err)) 29 } 30 31 return Version{ 32 Major: int(ver & 0xFF), 33 Minor: int(ver >> 8 & 0xFF), 34 Build: int(ver >> 16), 35 } 36 } 37 38 // IsWindowsVistaOrGreater returns true if the Windows version is Vista or 39 // greater. 40 func (v Version) IsWindowsVistaOrGreater() bool { 41 // Vista is 6.0. 42 return v.Major >= 6 && v.Minor >= 0 43 }