Как преобразовать значение REG_BINARY из реестра в строку? (vb.net)

У меня есть значение реестра, которое хранится как двоичное значение (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. Это запись для отключенного дополнительного элемента (отказоустойчивость)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
28 232
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ну, это не двоичные данные произвольный - это текстовые данные в кодировке типа некоторый. Вам нужно узнать, что это за кодировка.

Я не удивлюсь, если Encoding.Unicode.GetString(value) сработает, но если это не так, отправьте образец (в шестнадцатеричном формате), и я посмотрю, что я могу сделать. Что говорится в документации о том, что помещает туда данные?

Обновлено: Похоже, Encoding.Unicode - ваш друг, но начиная с байта 12. Используйте

Encoding.Unicode.GetString(bytes, 12, bytes.Length-12)

Encoding.Unicode тоже не работает. Надеюсь образец поможет?

Marcus 08.12.2008 16:03

Причина, по которой он не работает, заключается в первых 12 байтах. Избавьтесь от первых 12 байтов и передайте остальные в Unicode.GetString ().

OJ. 08.12.2008 16:07

Использовать

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" я получил полный список недавних

Другие вопросы по теме