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