Эта библиотека вам не нужна, просто сделайте следующее:
HKEY key = 0;
BYTE timestamp[16] = { 0 };
LRESULT err = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}\\0001", 0, KEY_READ, &key);
if (err == 0)
{
DWORD dwType = 0;
DWORD dwSize = 16;
::RegQueryValueEx(key, L"InstallTimeStamp", NULL, &dwType, timestamp, &dwSize);
RegCloseKey(key);
}
Что касается преобразования этих 16 байтов в «строку». Это не имеет большого смысла, учитывая, что эти 16 байтов являются двоичными данными. Вы можете сделать это:
std::string strTimestamp((char*)timestamp, 16);
Но я подозреваю, что вы просто хотите, чтобы указатель передавался на функцию sha512, которая ожидает тип данных char*
. В таком случае просто сделайте следующее:
const char* ts = (char*)timestamp;
Просто помните, что длина этого массива фиксирована и не является строкой с завершающим нулем. Таким образом, ваша функция ha sh также должна принимать параметр длины.