问题
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