2008-12-08 640 views
1

我有一個註冊表值存儲爲一個二進制值(REG_BINARY)存儲有關文件路徑的信息。該值被讀出到一個字節數組中。但是,我怎樣才能將它轉換成可讀的字符串?如何將REG_BINARY值從註冊表轉換爲字符串? (vb.net)

我已閱讀關於system.text.encoding.ASCII.GetString(值),但這不起作用。據我所知,註冊表值是任意的二進制數據,而不是ASCII,這是該方法產生無用數據的原因。

有誰知道我可以如何轉換數據?

樣品: (A片的條目)

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創建。這對於一個殘疾人插件項目(彈性)

回答

3

好一個條目,這不是任意二進制數據 - 這是文本數據一些類別的編碼。你需要找出編碼是什麼。

如果Encoding.Unicode.GetString(value)工作,我不會感到驚訝 - 但如果不行,請發佈樣本(十六進制),我會看看我能做些什麼。那些把數據放在那裏的說明文件是什麼?

編輯:它看起來像Encoding.Unicode是你的朋友,但是從字節12開始使用

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

Encoding.Unicode的完整列表不工作。我希望這個樣本能幫忙嗎? – Marcus 2008-12-08 13:03:10

0

使用

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

也期待在System.Text.EncodingSystem.Text.Encoding.Unicode

1

我這個問題,我解決了這種方式:

我已經聲明紅色變量:

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」我已經獲得近

相關問題