我只想用 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 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
我發(fā)現了!
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)

子衿沉夜
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 關注
- 259 瀏覽
添加回答
舉報
0/150
提交
取消