36 lines
971 B
Go
36 lines
971 B
Go
// +build windows
|
|
|
|
package common
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"regexp"
|
|
"syscall"
|
|
)
|
|
|
|
func workstationVerifyVersion(version string) error {
|
|
key := `SOFTWARE\Wow6432Node\VMware, Inc.\VMware Workstation`
|
|
subkey := "ProductVersion"
|
|
productVersion, err := readRegString(syscall.HKEY_LOCAL_MACHINE, key, subkey)
|
|
if err != nil {
|
|
log.Printf(`Unable to read registry key %s\%s`, key, subkey)
|
|
key = `SOFTWARE\VMware, Inc.\VMware Workstation`
|
|
productVersion, err = readRegString(syscall.HKEY_LOCAL_MACHINE, key, subkey)
|
|
if err != nil {
|
|
log.Printf(`Unable to read registry key %s\%s`, key, subkey)
|
|
return err
|
|
}
|
|
}
|
|
|
|
versionRe := regexp.MustCompile(`^(\d+)\.`)
|
|
matches := versionRe.FindStringSubmatch(productVersion)
|
|
if matches == nil {
|
|
return fmt.Errorf(
|
|
`Could not find a VMware WS version in registry key %s\%s: '%s'`, key, subkey, productVersion)
|
|
}
|
|
log.Printf("Detected VMware WS version: %s", matches[1])
|
|
|
|
return compareVersions(matches[1], version)
|
|
}
|