2016-05-03 111 views
1

返回默認值我只是想回到在Windows註冊表中的(默認)字符串值與Golang如何從Windows /註冊表與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) 

我運行它在CMD管理模式,但沒有被提至看到

+0

您確定在註冊表中有「默認」字符串值嗎?恐怕你沒有這樣的價值。什麼是你的Windows版本? –

+0

是的,實際上,任何鍵在註冊表中都有一個默認字符串值 –

+0

並且它是否設置了值?數據是'(未設定值)'。你收到了什麼樣的錯誤或結果? –

回答

3

我發現它!

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

我認爲問題是,雖然註冊表顯示默認值爲(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) 
+0

它不工作!請在Windows機器上檢查它。謝謝 –