2016-05-03 15 views
1

ich einen (Default) String-Wert in Windows-Registry mit Golang nur zurückWie ein Standardwert von windows/Registrierung mit golang zurückzukehren

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) 

Ich laufe es in CMD Admin-Modus, aber es wurde die Feststellung will siehe

+0

Sind Sie sicher, dass Sie einen "Default" -String-Wert in Ihrer Registrierung haben? Ich fürchte, Sie haben keinen solchen Wert. Was ist deine Windows-Version? –

+0

Ja eigentlich hat jeder Schlüssel einen Default String Wert in der Registry –

+0

Und hat es einen Wert gesetzt? Die Daten sind '(Wert nicht gesetzt)'. Welche Art von Fehler oder Ergebnis haben Sie erhalten? –

Antwort

3

Ich finde es heraus!

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) 
1

Ich denke, das Problem ist, dass während Regedit den Standardwert als (Default) zeigen (beachten Sie die Klammern), eigentlich müssen Sie ohne Klammern zugreifen.

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) 
+0

Es funktioniert nicht! Bitte überprüfen Sie es auf Ihrem Windows-Rechner. Vielen Dank –

Verwandte Themen