У меня есть значение реестра, которое хранится как двоичное значение (REG_BINARY), содержащее информацию о пути к файлу. Значение считывается в массив байтов. Но как преобразовать его в читаемую строку?
Я читал о system.text.encoding.ASCII.GetString (value), но это не работает. Насколько мне известно, значение реестра - это произвольные двоичные данные, а не ASCII, что является причиной того, что метод создает бесполезные данные.
Кто-нибудь знает, как я могу преобразовать данные?
Образец: (Фрагмент записи)
01 00 00 00 94 00 00 00 14 00 00 00 63 00 3A 00 5C 00
70 00 72 00 6F 00 67 00 72 00 61 00 6D 00 6d 00 65 00
5C 00 67 00 65 00 6D 00 65 00 69 00 6E 00 73 00 61 00
6D 00 65 00 20 00 64 00 61 00 74 00 65 00 69 00 65 00
6E 00 5C
Из-за regedit это должно быть:
............c.:.\.p.r.o.g.r.a.m.m.e.\.g.e.m.e.i.n.s.a.m.e. .d.a.t.e.i.e.n.\
Сама запись была создана из Outlook. Это запись для отключенного дополнительного элемента (отказоустойчивость)





Ну, это не двоичные данные произвольный - это текстовые данные в кодировке типа некоторый. Вам нужно узнать, что это за кодировка.
Я не удивлюсь, если Encoding.Unicode.GetString(value) сработает, но если это не так, отправьте образец (в шестнадцатеричном формате), и я посмотрю, что я могу сделать. Что говорится в документации о том, что помещает туда данные?
Обновлено: Похоже, Encoding.Unicode - ваш друг, но начиная с байта 12. Используйте
Encoding.Unicode.GetString(bytes, 12, bytes.Length-12)
Причина, по которой он не работает, заключается в первых 12 байтах. Избавьтесь от первых 12 байтов и передайте остальные в Unicode.GetString ().
Использовать
Function Microsoft.Win32.RegistryKey.GetValue(name as String) as Object
Также посмотрите System.Text.Encoding и System.Text.Encoding.Unicode
У меня тоже была эта проблема, и я решил так:
Я объявил переменную как:
Dim encoding As System.Text.Encoding = System.Text.Encoding.Unicode
Затем я делаю это в цикле:
For Each Val As String In ValueName
data = k.GetValue(Val)
ListRecent.Items.Add(Val & ": " & encoding.GetString(data))
Next
Итак, в списке под названием "ListRecent" я получил полный список недавних
Encoding.Unicode тоже не работает. Надеюсь образец поможет?