小编典典

使用Go创建注册表项/字符串

go

我正在按照此文档在Windows注册表中使用以下代码片段创建键/字符串:

package main

import (
    "golang.org/x/sys/windows/registry"
    "log"
)

func main() {

    k, err := registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Audio`, registry.QUERY_VALUE)
    if err != nil {
        log.Fatal(err)
    }
    k.SetStringValue("xyz", "blahblah")
    err = k.Close()
    if err != nil {
        log.Fatal(err)
    }
}

但没有任何反应,没有任何错误。编辑(说明):在任何情况下均无效。


阅读 442

收藏
2020-07-02

共1个答案

小编典典

您仅在QUERY_VALUE获得许可的情况下打开密钥,但是还需要SET_VALUE成功调用SetStringValue

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

k, err := registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Audio`, 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)
}
2020-07-02