如何使用 golang 从 windows/registry 返回默认值

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

if err != nil {

    log.Fatal(err)

}

fmt.Printf("Windows system root is %q\n", s)

我在 CMD 管理模式下运行它,但没有看到


UYOU
浏览 227回答 2
2回答

慕丝7291255

我发现了!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)

子衿沉夜

我认为问题在于,虽然 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go