为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 golang 从 windows/registry 返回默认值

如何使用 golang 从 windows/registry 返回默认值

Go
UYOU 2022-01-10 10:31:56
我只想用 Golang 在 Windows 注册表中返回一个(默认)字符串值k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)if err != nil {    log.Fatal(err)}defer k.Close()s, _, err := k.GetStringValue("(Default)") // It won't work// s, _, err := k.GetStringValue("SystemRoot") // This is workedif err != nil {    log.Fatal(err)}fmt.Printf("Windows system root is %q\n", s)我在 CMD 管理模式下运行它,但没有看到
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

我发现了!


k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.ALL_ACCESS)

s, _, err := k.GetStringValue("") // The blank one refers to (Default)


查看完整回答
反对 回复 2022-01-10
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

我认为问题在于,虽然 regedit 将默认值显示为(Default)(注意括号),但实际上您必须在没有括号的情况下访问。


k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)

if err != nil {

    log.Fatal(err)

}

defer k.Close()


s, _, err := k.GetStringValue("Default")

if err != nil {

    log.Fatal(err)

}

fmt.Printf("Windows system root is %q\n", s)


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信