簡體   English   中英

如何將注冊表中的REG_BINARY值轉換為字符串? (vb.net)

[英]How can I convert a REG_BINARY value from the registry into a string ? (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創建的。 這是一個禁用的插件項目(彈性)的條目

好吧,這不是任意的二進制數據-這是在某種編碼的文本數據。 您需要找出什么是編碼。

如果Encoding.Unicode.GetString(value)工作正常,我不會感到驚訝-否則,請發布一個示例(以十六進制表示),然后我會做些什么。 關於將數據放入其中的文檔的說明是什么?

編輯:看起來Encoding.Unicode是您的朋友,但從字節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”的列表框中,我獲得了最近的完整列表

采用

Function Microsoft.Win32.RegistryKey.GetValue(name as String) as Object

還要看看System.Text.EncodingSystem.Text.Encoding.Unicode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM