레지스트리에서 reg_binary 값을 문자열로 변환하려면 어떻게해야합니까? (vb.net)
-
20-08-2019 - |
문제
나는 FilePath에 대한 정보를 보유하는 이진 값 (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
재설정으로 인해 이것은 다음과 같습니다.
............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에서 작성되었습니다. 장애인 addin 항목 (회복력)의 항목입니다.
해결책
글쎄요, 그렇지 않습니다 임의 이진 데이터 - 텍스트 데이터입니다 약간 종류의 인코딩. 인코딩이 무엇인지 찾아야합니다.
나는 놀라지 않을 것이다 Encoding.Unicode.GetString(value)
효과가 없다면 샘플을 게시하십시오 (16 진). 내가 할 수있는 일을 볼 것입니다. 데이터를 넣은 내용에 대한 문서는 무엇을 말합니까?
편집 : 인코딩처럼 보입니다. Unicode는 친구이지만 Byte 12부터 시작합니다.
Encoding.Unicode.GetString(bytes, 12, bytes.Length-12)
다른 팁
나도이 문제가 있었고 이런 식으로 해결했습니다.
변수를 다음과 같이 선언했습니다.
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"라는 Listbox에서 최근의 전체 목록을 얻었습니다.
사용
Function Microsoft.Win32.RegistryKey.GetValue(name as String) as Object
또한보십시오 System.Text.Encoding
그리고 System.Text.Encoding.Unicode