10

我使用以下代码将字节数组保存到注册表

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[] 不起作用。我知道我可以使用序列化程序或流来完成这项任务。我想知道是否有更简单的方法可以将数据读回 byte[] 类型(两行代码)?

请注意这个问题是在 C++

4

2 回答 2

9

要将字节数组写入注册表,请使用以下代码

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

于 2013-01-17T10:47:16.290 回答
-1

我在 VB.NET 中测试:

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

它有效

所以在 C# 中应该是:

Byte[] v = Convert.ToByte(obj);
于 2013-01-17T09:03:22.460 回答