Sto tentando di enumerare un elenco di valori nel registro di Windows utilizzando Go, ma sto riscontrando dei problemi. Ho provato due approcci: utilizzare la libreria syscall
fornita da Go per chiamare RegEnumValue
e using a Windows API wrapper by lxn. In entrambi i casi, sto avendo lo stesso problema. Questo è il codice che sto usando (che sta attualmente utilizzando la libreria vittoria da LXn):Enumerazione dei valori di registro in 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)
In questo caso, RegEnumValue
restituisce sempre il codice 87, che MSDN's only explanation è "Il parametro non è corretto."
Qualcuno ha qualche idea che possa indicarmi la giusta direzione per questo?
Sto cercando di capire come decodificare il lpData che è restituito. Qualche suggerimento su cosa stai facendo con lpData? – freb