Code:
#include <windows.h> 
#include <stdio.h>

int main(void)
{
    DWORD dwType, dwSize, dwRet;
    DWORD dwDisposition, dwIndex, dwResult;
    HKEY hKey;
    unsigned char input[] = {0x0a, 0x4f, 0x5c, 0x3a};

    RegCreateKeyEx(HKEY_LOCAL_MACHINE,
        "System\\BinaryData", 0, NULL,
        REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,
        &hKey, &dwDisposition);

    RegSetValueEx(hKey, "TestData", 0,
        REG_BINARY, (BYTE *)&input,
        sizeof(input));
    RegCloseKey(hKey);
    dwRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
        "System\\BinaryData",
        0, KEY_QUERY_VALUE, &hKey );
    if( dwRet != ERROR_SUCCESS )
    {
        printf("RegOpenKeyEx failed\n");
        return -1;
    }   
    dwResult = RegQueryValueEx(hKey, "TestData",
        0, &dwType, NULL, &dwSize);
    if((dwResult == ERROR_SUCCESS) && (dwType == REG_BINARY))
    {
        char *dataout = new char[dwSize];
        dwResult = RegQueryValueEx(hKey, "TestData", 0,
            &dwType, (BYTE *)dataout, &dwSize);
        if (dwResult == ERROR_SUCCESS)
        {
            for(dwIndex = 0; dwIndex < dwSize; dwIndex++)
                printf("%02x ", dataout[dwIndex]);
        }
        delete[] dataout;
    }
    else
    {
        printf("RegQueryValueEx failed\n");
        return -1;
    }
    return 0;    
}