我想迭代特定路径的值并阅读它们。 我试过这个
代码已更新
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 Lillevold建议我必须将字节数组转换为字符串。
为此,我创建了这个小函数,将对象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();
}
然后转换为@Peter建议的字符串。
因此在转换字节数组后,它应该返回一个二进制字符串。 我得到的是一些奇怪的字母和数字组合,但它不是二进制的。
对此有何帮助?
答案 0 :(得分:-1)
你得到&#34; System.Byte []&#34;因为您使用byte[]
的实例并在其上调用ToString()。这不会将字节数组的内容转换为文本,因为您可以使用Convert.ToBase64String
或Encoding.UTF8.GetString
之类的内容。有关this SO question中的主题的更多讨论。