循环访问注册表项并读取注册表值
本文关键字:注册表 读取 访问 循环 | 更新日期: 2023-09-27 18:36:44
我想遍历特定路径的值并读取它们。我试过这个
代码已更新
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问题中对这个主题进行了更多讨论。