使用GO创建注册表密钥/字符串



我正在关注此文档,以使用此代码段中的Windows注册表中创建一个键/字符串:

package main
import (
    "golang.org/x/sys/windows/registry"
    "log"
)
func main() {
    k, err := registry.OpenKey(registry.CURRENT_USER, `SoftwareMicrosoftWindowsCurrentVersionAudio`, registry.QUERY_VALUE)
    if err != nil {
        log.Fatal(err)
    }
    k.SetStringValue("xyz", "blahblah")
    err = k.Close()
    if err != nil {
        log.Fatal(err)
    }
}

但是什么也没有发生,没有任何错误。编辑(澄清):在任何情况下都无效。

您仅使用QUERY_VALUE许可打开密钥,但是您还需要SET_VALUE才能成功致电SetStringValue

您还应该检查SetStringValue上的返回值,这可能会告诉您问题所在。

k, err := registry.OpenKey(registry.CURRENT_USER, `SoftwareMicrosoftWindowsCurrentVersionAudio`, registry.QUERY_VALUE|registry.SET_VALUE)
if err != nil {
    log.Fatal(err)
}
if err := k.SetStringValue("xyz", "blahblah"); err != nil {
    log.Fatal(err)
}
if err := k.Close(); err != nil {
    log.Fatal(err)
}

最新更新