我想迭代特定路径的值并读取它们。我试过这个
代码更新的
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\IntelliForms\Storage2", true);
var names = key.GetValueNames();
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
byte[] test = ObjectToByteArray(key.GetValue(names[i]));
var value = Convert.ToBase64String(test);
Console.WriteLine(value);
};通常,字符串value应该是加密的二进制文件。
更新:因此@Peter建议我必须将字节数组转换为字符串。为此,我创建了这个小函数来将对象key.GetValue转换为一个字节数组。
public static byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
return null;
BinaryFormatter Binaryform = new BinaryFormatter();
MemoryStream MemStream = new MemoryStream();
Binaryform.Serialize(MemStream, obj);
return MemStream.ToArray();
}然后像彼得建议的那样转换成字符串。
因此,在字节数组转换之后,它应该返回一个二进制字符串。我得到的是一些奇怪的组合字母和数字,但它不是二进制。
在这方面有什么帮助吗?
发布于 2015-01-08 21:32:59
获得"System.Byte[]“是因为您以byte[]为实例并在其上调用ToString()。这将不会将字节数组的内容转换为文本,因为您将使用类似于Convert.ToBase64String或Encoding.UTF8.GetString的内容。在this SO question中对这个主题有更多的讨论。
https://stackoverflow.com/questions/27849817
复制相似问题