레지스트리에서 문자열 키를로드하기위한 여러 코드를 시험해보고 테스트 한 후에이 코드를 적어 두었습니다. 하지만 매우 혼란스러운 것은이 코드가 HKEY_LOCAL_MACHINE/HARDWARE 키에서 작동하지만 소프트웨어에서는 작동하지 않는다는 것입니다. 내가 뭘 무시하는지 모르겠다.레지스트리 키 오류로드
char rgValue [512];
char fnlRes [512];
DWORD size1;
DWORD Type;
HKEY hKey = 0;
char buf[512] = {0};
DWORD dwType = 0;
DWORD dwBufSize = sizeof(buf);
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\SCADE\\HMI"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
dwType = REG_DWORD;
if(RegQueryValueEx(hKey, TEXT("test"), 0, &dwType, (LPBYTE)buf, &dwBufSize) == ERROR_SUCCESS)
{
cout << "key value is '" << buf << "'\n";
}
else
cout << "can not query for key value\n";
RegCloseKey(hKey);
}
else
cout << "Can not open key\n";
전화'GetLastError' 및 결과에 게시물을 업데이트합니다. –
@RichardCritten GetLastError에 익숙하지 않지만 코드에 삽입하고 0 값을 반환했습니다. 내 주 코드에서 regKey를 성공적으로 열면 RegQueryValueEx 오류가 발생하고 디버거가 "키 값을 쿼리 할 수 없습니다"행으로 바뀝니다. –
'RegQueryValueEx'에 대한 문서를 읽은 후 반환 결과에 대한 부울 값을 반환하지 않습니다. 참조 : https://msdn.microsoft.com/en-us/library/windows/desktop/ms724911(v=vs.85).aspx 링크의 샘플도 참조하십시오. –