github.com/AlpineAIO/wails/v2@v2.0.0-beta.32.0.20240505041856-1047a8fa5fef/internal/system/operatingsystem/os_windows.go (about)

     1  //go:build windows
     2  
     3  package operatingsystem
     4  
     5  import (
     6  	"fmt"
     7  
     8  	"golang.org/x/sys/windows/registry"
     9  )
    10  
    11  func platformInfo() (*OS, error) {
    12  	// Default value
    13  	var result OS
    14  	result.ID = "Unknown"
    15  	result.Name = "Windows"
    16  	result.Version = "Unknown"
    17  
    18  	// Credit: https://stackoverflow.com/a/33288328
    19  	// Ignore errors as it isn't a showstopper
    20  	key, _ := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
    21  
    22  	productName, _, _ := key.GetStringValue("ProductName")
    23  	currentBuild, _, _ := key.GetStringValue("CurrentBuildNumber")
    24  	displayVersion, _, _ := key.GetStringValue("DisplayVersion")
    25  	releaseId, _, _ := key.GetStringValue("ReleaseId")
    26  
    27  	result.Name = productName
    28  	result.Version = fmt.Sprintf("%s (Build: %s)", releaseId, currentBuild)
    29  	result.ID = displayVersion
    30  
    31  	return &result, key.Close()
    32  }