gpt4 book ai didi

windows - 在 Go 中检测 windows 版本以找出启动文件夹

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:38 24 4
gpt4 key购买 nike

有没有办法检测主机操作系统是 XP、Vista、7、8 还是 10?runtime.GOOS 只返回“windows”。

这是因为我试图操作启动文件夹中的文件。

在 Windows Vista、7、8、10 上,它位于:

%appdata%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

在 Windows XP 上它位于:

Documents and Settings\%username%\Start Menu\Programs\Startup

最佳答案

为什么不使用 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 - 在 Go 中检测 windows 版本以找出启动文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44363911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com