How to return a default value from windows/registry with golang

心不动则不痛 提交于 2020-01-05 04:04:06

问题


I just want to return a (Default) string value in Windows registry with Golang

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 worked
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Windows system root is %q\n", s)

I run it in CMD admin mode but there was noting to see


回答1:


I find it out!

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)



回答2:


I think the issue is that whilst regedit show the default value as (Default) (note the parentheses), actually you have to access without parentheses.

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)


来源:https://stackoverflow.com/questions/36998532/how-to-return-a-default-value-from-windows-registry-with-golang

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!