這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport ("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")}