Документация в пакете реестра для GetValue()
гласит:
GetValue извлекает тип и данные для указанного значения, связанного с открытым ключом k. Он заполняет буфер buf и возвращает количество найденных байтов n. Если buf слишком мал, чтобы соответствовать сохраненному значению, он возвращает ошибку ErrShortBuffer вместе с требуемым размером буфера n. Если буфер не предоставлен, он возвращает истину и фактический размер буфера n. Если буфер не предоставлен, GetValue возвращает только тип значения. Если значение не существует, возвращается ошибка ErrNotExist.
GetValue - функция низкого уровня. Если тип значения известен , используйте вместо него соответствующую функцию Get * Value. "
В моем случае я не знаю тип значения ключа реестра. Однако мне нужно толькодля вывода значения в виде строки. GetValue()
принимает имя значения и «буфер», но буфер имеет тип байта []. Он не передается по ссылке, поэтому я не могу просто создать var buf []byte
, передать егои читать его. Я не могу передать это с помощью &buf
(type *[]byte
). Я не могу использовать byte.Buffer
(также несоответствие типов). Я чувствую, что что-то очень простое, что мне не хватает.
Код:
var buf []byte //????
_, _, e := myKey.GetValue(valuename, buf)
if e != nil {
panic(e)
}
fmt.Printf("Value: %s\n", string(buf)) // Prints blank