Go:操作注册表

aqtata · · 2636 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
package main

import (
	"fmt"
	"log"

	"golang.org/x/sys/windows/registry"
)

func main() {
	key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Hello Go", registry.ALL_ACCESS)
	if err != nil {
		log.Fatal(err)
	}
	defer key.Close()

	if exists {
		fmt.Println("键已存在")
	} else {
		fmt.Println("新建注册表键")
	}

	// 写入32位整形值
	key.SetDWordValue("DWORD", 0xFFFFFFFF)

	// 写入64位整形值
	key.SetQWordValue("QDWORD", 0xFFFFFFFFFFFFFFFF)

	// 写入字符串
	key.SetStringValue("String", "hello")

	// 写入多行字符串
	key.SetStringsValue("Strings", []string{"hello", "world"})

	// 写入二进制
	key.SetBinaryValue("Binary", []byte{0x11, 0x22})

	// 读取字符串值
	s, _, _ := key.GetStringValue("String")
	fmt.Println(s)

	// 枚举所有值名称
	values, _ := key.ReadValueNames(0)
	fmt.Println(values)

	// 创建三个子键
	subkey1, _, _ := registry.CreateKey(key, "Sub1", registry.ALL_ACCESS)
	subkey2, _, _ := registry.CreateKey(key, "Sub2", registry.ALL_ACCESS)
	subkey3, _, _ := registry.CreateKey(subkey1, "Sub3", registry.ALL_ACCESS)
	defer subkey1.Close()
	defer subkey2.Close()
	defer subkey3.Close()

	// 枚举所有子键
	keys, _ := key.ReadSubKeyNames(0)
	fmt.Println(keys)

	// 该键有子项,所以会删除失败
	err = registry.DeleteKey(key, "Sub1")
	if err != nil {
		fmt.Println(err)
	}

    // 没有子项,删除成功
	registry.DeleteKey(key, "Sub2")
}


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:aqtata

查看原文:Go:操作注册表

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:1006366459

2636 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传