How can I read binary data from registry to byte array

14,126

To write a byte array to registry use following code

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);

To Retrieve the data back from registry into Byte[] format use following:

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

Note: CurrentUser is name of the root for your Key location and points to HKEY_CURRENT_USER

Share:
14,126
AaA
Author by

AaA

Updated on July 20, 2022

Comments

  • AaA
    AaA almost 2 years

    I saved a byte array to registry using following code

    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);
    

    Here is the key created using above code:

    [HKEY_CURRENT_USER\Software\Software\Key]  
        "LOC"=hex:4a,03,00,00,45,02,00,00,b7,00,00,00,9d,00,00,00
    

    Now I want to read the same data back to byte array format. Following code can read the same data but the output is of type object.

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

    Here casting to byte[] does not work. I know I can use serializer or streams to achieve this task. I would like to know if there is an easier way to read data back to byte[] type (A two liner code)?

    Please note this question is in C++

  • AaA
    AaA over 11 years
    Thanks for your answer but Convert.ToByte returns a single byte