迭代注册表项并读取注册表值

时间:2015-01-08 21:27:38

标签: c# registry

我想迭代特定路径的值并阅读它们。 我试过这个

代码已更新

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建议的字符串。

因此在转换字节数组后,它应该返回一个二进制字符串。 我得到的是一些奇怪的字母和数字组合,但它不是二进制的。

对此有何帮助?

1 个答案:

答案 0 :(得分:-1)

你得到&#34; System.Byte []&#34;因为您使用byte[]的实例并在其上调用ToString()。这不会将字节数组的内容转换为文本,因为您可以使用Convert.ToBase64StringEncoding.UTF8.GetString之类的内容。有关this SO question中的主题的更多讨论。