我怎么能转换REG_BINARY值从注册表成字符串? (vb.net)
-
20-08-2019 - |
题
我具有被存储为二进制值(REG_BINARY)保持关于一个文件路径的信息的注册表值。该值被读出到一个字节数组。但如何可以将其转换为可读的字符串?
我已阅读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创建。这是一个禁用插件项目的条目(弹性)
解决方案
好了,它不是的任意的二进制数据 - 它在的一些的一种编码的文本数据。你需要找出编码是什么。
我也不会感到惊讶,如果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.Encoding
和System.Text.Encoding.Unicode
不隶属于 StackOverflow