我只想用 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 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
慕丝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)
![?](http://img1.sycdn.imooc.com/533e4c420001b2e502000200-100-100.jpg)
子衿沉夜
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)
- 2 回答
- 0 关注
- 226 浏览
添加回答
举报
0/150
提交
取消