Windows에 소프트웨어 정책 해시 규칙을 추가하는 과정을 자동화하고 현재 유효한 해시를 레지스트리에 추가하는 데 문제가 있습니다. 이 코드는 키를 생성하고 레지스트리에 해시를 추가 : 규칙에 레지스트리 키를 비교할 때Windows 레지스트리에서 REG_BINARY 유형에 문자열을 올바르게 추가하십시오.
그러나이 잘 작동하고 레지스트리에 키를 추가
HKEY* m_hKey;
string md5Digest;
string valueName = "ItemData";
vector<BYTE> itemData;
/*
use Crypto++ to get file hash
*/
//convert string to format that can be loaded into registry
for (int i = 1; i < md5Digest.length(); i += 2)
itemData.push_back('0x' + md5Digest[i - 1] + md5Digest[i]);
// Total data size, in bytes
const DWORD dataSize = static_cast<DWORD>(itemData.size());
::RegSetValueEx(
m_hKey,
valueName.c_str(),
0, // reserved
REG_BINARY,
&itemData[0],
dataSize
);
'정보 ItemData': 그룹 정책에 의해 추가 당신은 매우 중요한 차이를 볼 수 있습니다 값은 서로 다릅니다. 맨 아래 그림의 ItemData 값이 올바른 출력입니다. 나는 문제가 바이트 부호없는 문자의 정보 ItemData 벡터에 md5Digest 문자열의 변환에 놓여 있도록 md5Digest가 올바른 값이 있는지 분명히 알 수있는 프로그램 ....
을 디버깅 할 때 무엇이다 내 코드의 문제점, 왜 데이터가 레지스트리에 잘못 입력 되었습니까?
'char_code ('x') + char_code ('3') + char_code ('D') = 0xEF' 이후에 잘못된 벡터를 만드는 것처럼 보이지만 0x3D가 필요합니다. –
@ JohnnyMopp 어떻게 올바르게 벡터를 만들 수 있습니까? –