繁体   English   中英

遍历注册表项并读取注册表值

[英]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.ToBase64StringEncoding.UTF8.GetString类的东西。 有关此SO问题的更多讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM