레지스트리에서 reg_binary 값을 문자열로 변환하려면 어떻게해야합니까? (vb.net)

StackOverflow https://stackoverflow.com/questions/349410

문제

나는 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top