Golang子reddit的成员指出,我实际上并没有为传递给的缓冲区分配任何内存
RegEnumValue。因此,我已将上面的示例更正为以下内容:
var name_length uint32 = 72var key_type uint32var lpDataLength uint32 = 72var zero_uint uint32 = 0name := make([]uint16, 72)lpdata:= make([]byte, 72)win.RegEnumValue(root, zero_uint, &name[0], &name_length, nil, &key_type, &lpData[0], &lpDataLength)
显然,“幻数”
72应该应该用其他东西代替。有另一个称为的方法
RegQueryInfoKey,可以检索有关注册表项的信息,以便为项中最大的名称和值分配正确的字节数。



