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[] 型 (2 行コード) に戻す簡単な方法があるかどうかを知りたいですか?

この質問は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 に答える