我如何从注册表读取二进制数据到字节数组
本文关键字:二进制 数据 到字节 数组 读取 注册表 | 更新日期: 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);