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