1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
func tCURDRegistry() {
    // 创建键值,若已存在,则直接返回键值,注意权限
    key, exist, err := registry.CreateKey(registry.CURRENT_USER, "test", registry.ALL_ACCESS)
    if err != nil {
        log.Fatal(err)
    }
    defer key.Close()
    fmt.Println(key, exist)

    // 创建子键值
    subKey, exist, err := registry.CreateKey(key, "test_sub", registry.ALL_ACCESS)
    if err != nil {
        log.Fatal(err)
    }
    defer subKey.Close()
    fmt.Println(subKey, exist)

    // 查询键值
    //key1, err := registry.OpenKey(registry.CURRENT_USER, "test", registry.ALL_ACCESS)
    //if err != nil {
    //  log.Fatal(err)
    //}
    //defer key1.Close()

    // 没有修改键值的相关方法,可以删了再加新的

    // 修改值项,若不存在会添加
    err = key.SetStringValue("A", "a")
    if err != nil {
        log.Fatal(err)
    }
    err = key.SetStringValue("B", "b")
    if err != nil {
        log.Fatal(err)
    }

    // 获取值项
    v, vt, err := key.GetStringValue("A")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(v, vt)

    // 参数设0,枚举所有子键
    kns, err := key.ReadSubKeyNames(0)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(kns)

    // 参数设0,枚举所有值项
    vns, err := key.ReadValueNames(0)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(vns)

    // 删除值项
    err = key.DeleteValue("A")
    if err != nil {
        log.Fatal(err)
    }

    // 删除键值,注意:若有子键,删除会报错
    //err = registry.DeleteKey(registry.CURRENT_USER, "test")
    //if err != nil {
    //  log.Fatal(err)
    //}

    err = registry.DeleteKey(key, "test_sub")
    if err != nil {
        log.Fatal(err)
    }
}

注意权限问题!!!