Tôi đang cố gắng liệt kê một danh sách các giá trị trong Windows registry bằng cách sử dụng Go, nhưng tôi đang gặp một số sự cố. Tôi đã thử hai cách tiếp cận: sử dụng cả thư viện được cung cấp syscall
do Go cung cấp để gọi số RegEnumValue
, cũng như using a Windows API wrapper by lxn. Trong cả hai trường hợp, tôi gặp vấn đề tương tự. Đây là mã Tôi đang sử dụng (hiện đang được sử dụng thư viện giành chiến thắng từ lxn):Liệt kê các giá trị đăng ký trong Go (Golang)
var root win.HKEY
rootpath, _ := syscall.UTF16PtrFromString("HARDWARE\\DEVICEMAP\\SERIALCOMM")
fmt.Println(win.RegOpenKeyEx(win.HKEY_LOCAL_MACHINE, rootpath, 0, win.KEY_READ, &root))
var name_length uint32 = 72
var name *uint16
var key_type uint32
var lpData *byte
var lpDataLength uint32 = 72
var zero_uint uint32 = 0
fmt.Println(win.RegEnumValue(root, zero_uint, name, &name_length, nil, &key_type, lpData, &lpDataLength))
win.RegCloseKey(root)
Trong trường hợp này, RegEnumValue
luôn trả về mã 87, mà MSDN's only explanation là "Tham số là không chính xác."
Có ai có bất kỳ ý tưởng nào có thể đưa tôi đi đúng hướng cho điều này không?
Tôi đang cố gắng tìm ra cách để giải mã các lpData đó là trả lại. Bất kỳ gợi ý nào về những gì bạn đang làm với lpData? – freb