[英]Iterate through registry keys and read registry values
我想遍历特定路径的值并读取它们。 我试过了
代码已更新
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的建议转换为字符串。
因此,在字节数组转换之后,应该返回一个二进制字符串。 我得到的是字母和数字的某种奇怪组合,但它不是二进制的。
有什么帮助吗?
之所以会得到“ System.Byte []”,是因为您获取了byte[]
的实例并对其调用了ToString()。 这不会将字节数组的内容转换为文本,因为您将使用Convert.ToBase64String
或Encoding.UTF8.GetString
类的东西。 有关此SO问题的更多讨论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.