Как исправить мою программу на C ++, если она показывает значение реестра, отличное от реального значения? - PullRequest
0 голосов
/ 26 января 2019

Я написал программу на C ++ в Code :: Blocks, которая читает значение типа REG_NONE из реестра.

Вот мои коды:

#define KEY_WOW64_64KEY 0x0100
#include "string"
#include "windows.h"
using namespace std;

int main()
{
    HKEY hKey;
    long longErrorCode;
    string strErrorCaption = "Hata";
    string strErrorMessage;
    string strSubKey = "Software\\DownloadManager\\Scheduler";

    longErrorCode = RegOpenKeyEx(HKEY_CURRENT_USER, strSubKey.c_str(), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey);

    if (longErrorCode != ERROR_SUCCESS)
    {
        strErrorMessage = "Anahtar açılamadı.";

        MessageBox(NULL, strErrorMessage.c_str(), strErrorCaption.c_str(), MB_OK | MB_ICONERROR);

        return 0;
    }

    else
    {
        DWORD dwSize = MAX_PATH;
        DWORD dwValueContent;
        DWORD dwValueType = REG_NONE;
        string strValueName = "startDay";

        longErrorCode = RegQueryValueEx(hKey, strValueName.c_str(), 0, &dwValueType, (LPBYTE)&dwValueContent, &dwSize);

        if (longErrorCode != ERROR_SUCCESS)
        {
            RegCloseKey(hKey);

            strErrorMessage = "Değer açılamadı.";

            MessageBox(NULL, strErrorMessage.c_str(), strErrorCaption.c_str(), MB_OK | MB_ICONERROR);

            return 0;
        }

        else
        {
            string strValueContent = to_string(dwValueContent);

            RegCloseKey(hKey);

            strErrorCaption = "Başarılı!";

            MessageBox(NULL, strValueContent.c_str(), strErrorCaption.c_str(), MB_OK | MB_ICONINFORMATION);

            return 0;
        }
    }
}

Реальное значение ключа реестра, который я пытался прочитать, это "f5 68 4b 5c" .

Но проблема в том, что я получил "1548445941" . Я также попробовал струнный поток; но это не сработало.

Итак, что мне делать, чтобы исправить эту проблему?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Открыть калькулятор Windows. Переключиться в режим программиста. Нажмите DEC type в 1548445941. Обратите внимание, что HEX равен 5C 4B 68 F5. Поймите, что это значение, которое вы получили из реестра, но перевернули, затем прочитайте о порядке байтов.

0 голосов
/ 26 января 2019

число верное, если вы заметили, что байты упорядочены от нижнего до верхнего байта.

Hex 5C4B68F5 = dec 1548445941
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...