in order to implement sst for windows and macos the structure of osmanager has been changed. Now osmanager has a new field pm, which contains the specific packagemanager for the os. Linux packagemanagers have been implemented as packagemanagers on their own.
30 lines
767 B
Go
30 lines
767 B
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package packagemanager
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"golang.org/x/sys/windows/registry"
|
|
)
|
|
|
|
func platformInfoWin() (*OS, error) {
|
|
var result OS
|
|
result.ID = "Unknown"
|
|
result.Name = "Windows"
|
|
result.Version = "Unknown"
|
|
|
|
key, _ := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
|
|
|
|
productName, _, _ := key.GetStringValue("ProductName")
|
|
currentBuild, _, _ := key.GetStringValue("CurrentBuildNumber")
|
|
displayVersion, _, _ := key.GetStringValue("DisplayVersion")
|
|
releaseId, _, _ := key.GetStringValue("ReleaseId")
|
|
|
|
result.Name = productName
|
|
result.Version = fmt.Sprintf("%s (Build: %s)", releaseId, currentBuild)
|
|
result.ID = displayVersion
|
|
|
|
return &result, key.Close()
|
|
}
|