1.读取内容如图所示:获得的值
2. 注册表表中的值:
3.具体内容,即代码如下所示
// 解析注册表二进制类型的数据,处理还原成注册表中显示的16进制字符串// 数字处理,注册表二进制数据解析void NumToHexStrW(DWORD dwNum, CAtlStringW& str){UINT Temp = 0;UINT index = 0;while (dwNum > 0){Temp = dwNum % 16;if (Temp < 10) {str.AppendChar(Temp + _T('0'));}else {str.AppendChar(_T('A') + Temp - 10);}dwNum = dwNum >> 4;index++;}// 补全字符串for (UINT j = 0; j < 4 - index; j++){str.AppendChar(L'0');}str.MakeReverse();CAtlStringW aa = str.Mid(2, 3);CAtlStringW bb = str.Left(2);str.Format(L"%ws %ws", aa, bb);}// 还原注册表二进制数据类型格式CAtlStringW RegBinaryStrProcessingW(LPCWSTR lpszData, DWORD dwLength){CAtlStringW strData;for (ULONG i = 0; i < dwLength; i++){CAtlStringW str;NumToHexStrW(lpszData[i], str);strData.AppendFormat(L"%ws ", str);}return strData;}CAtlString ReadRegBinaryValue(HKEY hKey, LPCWSTR lpSubKey, LPCWSTR lpValue){CAtlString strBinaryValue;DWORD dwFlags = REG_BINARY;HKEY hKeyResult;BOOL ret = RegOpenKeyEx(hKey, lpSubKey, 0, KEY_READ, &hKeyResult);if (ERROR_SUCCESS == ret){DWORD dwLength = 0;// 获得读取键值有多少个字符RegQueryValueEx(hKeyResult, lpValue, NULL, &dwFlags, NULL, &dwLength);// 申请一段空间,并初始化为空TCHAR* BinaryInfo = new TCHAR[dwLength + 1];memset(BinaryInfo, 0, sizeof(TCHAR) * (dwLength + 1));if (ERROR_SUCCESS == RegQueryValueEx(hKeyResult, lpValue, NULL, &dwFlags, (LPBYTE)BinaryInfo, &dwLength)){// 解析还原成字符串strBinaryValue = RegBinaryStrProcessingW(BinaryInfo, dwLength + 1);}delete[] BinaryInfo;}RegCloseKey(hKeyResult);return strBinaryValue;}