Add getOSInfo err info

This commit is contained in:
longhui.li 2021-05-13 13:43:06 +08:00
parent b0abe89ae2
commit 4af506c989

View File

@ -31,35 +31,38 @@ type OSInfo struct {
// GetOSInfo reads Windows version information from the registry // GetOSInfo reads Windows version information from the registry
func GetOSInfo() (*OSInfo, error) { func GetOSInfo() (*OSInfo, error) {
// for log detail
var keyPrefix string = `regedit:LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion`
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 nil, err return nil, fmt.Errorf("getOSInfo, open Windows %s failed: %w", keyPrefix, err)
} }
defer k.Close() defer k.Close()
buildNumber, _, err := k.GetStringValue("CurrentBuildNumber") buildNumber, _, err := k.GetStringValue("CurrentBuildNumber")
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("getOSInfo, get %s\\CurrentBuildNumber failed: %w", keyPrefix, err)
} }
majorVersionNumber, _, err := k.GetIntegerValue("CurrentMajorVersionNumber") majorVersionNumber, _, err := k.GetIntegerValue("CurrentMajorVersionNumber")
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("getOSInfo, get %s\\CurrentMajorVersionNumber failed: %w", keyPrefix, err)
} }
minorVersionNumber, _, err := k.GetIntegerValue("CurrentMinorVersionNumber") minorVersionNumber, _, err := k.GetIntegerValue("CurrentMinorVersionNumber")
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("getOSInfo, get %s\\CurrentMinorVersionNumber failed: %w", keyPrefix, err)
} }
revision, _, err := k.GetIntegerValue("UBR") revision, _, err := k.GetIntegerValue("UBR")
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("getOSInfo, get %s\\UBR failed: %w", keyPrefix, err)
} }
productName, _, err := k.GetStringValue("ProductName") productName, _, err := k.GetStringValue("ProductName")
if err != nil { if err != nil {
return nil, nil return nil, fmt.Errorf("getOSInfo, get %s\\ProductName failed: %w", keyPrefix, err)
} }
return &OSInfo{ return &OSInfo{