爲什麼不使用Windows註冊表?
https://godoc.org/golang.org/x/sys/windows/registry
How to return a default value from windows/registry with golang
package main
import (
"golang.org/x/sys/windows/registry"
"log"
"fmt"
)
func main() {
k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
if err != nil {
log.Fatal(err)
}
defer k.Close()
cv, _, err := k.GetStringValue("CurrentVersion")
if err != nil {
log.Fatal(err)
}
fmt.Printf("CurrentVersion: %s\n", cv)
pn , _, err := k.GetStringValue("ProductName")
if err != nil {
log.Fatal(err)
}
fmt.Printf("ProductName: %s\n", pn)
maj, _, err := k.GetIntegerValue("CurrentMajorVersionNumber")
if err != nil {
log.Fatal(err)
}
fmt.Printf("CurrentMajorVersionNumber: %d\n", maj)
min, _, err := k.GetIntegerValue("CurrentMinorVersionNumber")
if err != nil {
log.Fatal(err)
}
fmt.Printf("CurrentMinorVersionNumber: %d\n", min)
cb, _, err := k.GetStringValue("CurrentBuild")
if err != nil {
log.Fatal(err)
}
fmt.Printf("CurrentVersion: %s\n", cb)
}
這將返回:
PS C:\Users\Adamar\Desktop> .\WindowsVersion.exe
CurrentVersion: 6.3
ProductName: Windows Server 2016 Standard Evaluation
CurrentMajorVersionNumber: 10
CurrentMinorVersionNumber: 0
CurrentVersion: 14393
雖然在Windows的最新版本,一定要仔細閱讀下面的按鍵來獲取版本:CurrentMajorVersionNumber & CurrentMinorVersionNumber
我敢肯定,有一些Windows API用於查找啓動文件夾,這將比嘗試自己找到它更好。 –
正確的方法是使用帶有['KNOWNFOLDERID''](https:// msdn)的['SHGetKnownFolderPath'函數](https://msdn.microsoft.com/library/windows/desktop/bb762188.aspx) microsoft.com/library/windows/desktop/dd378457.aspx)['FOLDERID_CommonStartup'](https://msdn.microsoft.com/library/windows/desktop/dd378457.aspx#FOLDERID_CommonStartup)或['FOLDERID_Startup'] (https://msdn.microsoft.com/library/windows/desktop/dd378457.aspx#FOLDERID_Startup)取決於你對哪個Startup文件夾感興趣。 –
我看了看'SHGetKnownFolderPath',它說「支持的最小客戶端: Windows Vista「,這是否意味着這個功能將無法在XP上運行? – JackMordaunt