我如何从注册表读取二进制数据到字节数组

本文关键字:二进制 数据 到字节 数组 读取 注册表 | 更新日期: 2023-09-27 17:53:45

我使用下面的代码保存了一个字节数组到注册表

Byte[] value = new byte[16]{
    0x4a,0x03,0x00,0x00, 
    0x45,0x02,0x00,0x00, 
    0xb7,0x00,0x00,0x00, 
    0x9d,0x00,0x00,0x00
};
RegistryKey key = Registry.CurrentUser.CreateSubKey(KeyName);
key.SetValue(@"Software'Software'Key", value, RegistryValueKind.Binary);
下面是用上面的代码创建的键:
[HKEY_CURRENT_USER'Software'Software'Key]  
    "LOC"=hex:4a,03,00,00,45,02,00,00,b7,00,00,00,9d,00,00,00

现在我想把相同的数据读回字节数组格式。下面的代码可以读取相同的数据,但输出是对象类型。

RegistryKey key = Registry.CurrentUser.OpenSubKey(KeyName);
object obj =  key.GetValue(@"Software'Software'Key", value);

此处转换为byte[]不起作用。我知道我可以使用序列化器或流来完成这项任务。我想知道是否有一种更简单的方法将数据读取回字节[]类型(两行代码)?

请注意这个问题是用c++写的

我如何从注册表读取二进制数据到字节数组

使用以下代码向注册表写入字节数组

Byte[] value = new byte[]{
    0x4a,0x03,0x00,0x00, 
    0x45,0x02,0x00,0x00, 
    0xb7,0x00,0x00,0x00, 
    0x9d,0x00,0x00,0x00
};
RegistryKey key = Registry.CurrentUser.CreateSubKey(KeyName);
key.SetValue(@"Software'AppName'Key", value, RegistryValueKind.Binary);

从注册表中检索数据为Byte[]格式,使用如下命令:

RegistryKey key = Registry.CurrentUser.OpenSubKey(KeyName);
byte[] Data =  (byte[]) key.GetValue(@"Software'AppName'Key", value);

注意:CurrentUser是键位置的根名称,指向HKEY_CURRENT_USER

我在VB中测试。净:

Dim obj As Object = key.GetValue("Software'Software'Key", value__1)`
Dim v As [Byte]() = CType(obj, Byte())`

,它工作

在c#中应该是:

Byte[] v = Convert.ToByte(obj);