从注册表中读取MachineGuid

时间:2015-03-09 14:56:55

标签: c++ windows registry

我正在尝试从注册表中手动读取MachineGuid。这有效,RegQueryValueEx给了我正在寻找的价值,但每个角色后面都有一个空终止字符,为什么会发生这种情况呢?

代码:

string read_reg_sz() 
{
    char Buffer[_MAX_PATH];
    char dwMHz[_MAX_PATH] = {0};
    DWORD BufSize = _MAX_PATH;
    DWORD dataType = REG_SZ;
    HKEY hKey;
    long lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Cryptography"), NULL, KEY_READ | KEY_WOW64_64KEY, &hKey);
    if (lError != ERROR_SUCCESS)
    {
        FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
            NULL,
            lError,
            0,
            (LPWSTR)Buffer,
            _MAX_PATH,
            0);
        cout << lError << endl;
        return "N/A";
    }
    int val = RegQueryValueEx(hKey, L"MachineGuid", NULL, &dataType, (LPBYTE)&dwMHz, &BufSize);
    if (val == ERROR_SUCCESS)
        cout << "succes!" << endl;
    else
        cout << "failed!" << endl;
    RegCloseKey(hKey);
    cout << "\n reg data read: " << dwMHz;
    return dwMHz;
}

结果是: showing result

这只显示了我的MachineGuid的1个字符,它以“f”开头。所以我在Visual Studio中添加了一个断点,以便在regquery调用之后检查dwMHz数组的值,这就是它的样子: regquery call result

那么为什么我的结果数组被空终止字符污染了?

0 个答案:

没有答案
相关问题