1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 读取注册表REG_BINARY(二进制)类型的数据

读取注册表REG_BINARY(二进制)类型的数据

时间:2021-07-31 19:36:18

相关推荐

读取注册表REG_BINARY(二进制)类型的数据

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。