Я хочу прочитать Windows Install Date
значение из реестра с использованием Windows API, как показано ниже:
HKEY hKey = { 0 };
LONG lResult = ERROR_SUCCESS;
// Open a registry key
lResult = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",
0, KEY_READ, &hKey);
// If registry key opened
if (lResult == ERROR_SUCCESS)
{
// Get OS install date/time
DWORD dwInstallDate = 0;
dwBufferSize = sizeof(DWORD);
if (RegQueryValueExA(hKey, "InstallDate", 0, NULL, (LPBYTE)&dwInstallDate, &dwBufferSize) == ERROR_SUCCESS)
{
printf("OS Install Date is : %lu", dwInstallDate);
}
else
{
printf("The specific key not found!");
}
// Finally we should close the key when we finished with it
RegCloseKey(hKey);
}
Но вывод всегда 0
, в то время как "InstallDate"
значение равно 1520291827
:
OS Installe Date is : 0
Кроме того, я использую форматы "%ld"
и "d"
, но у него тот же вывод ...
Значение "InstallDate"в реестре содержал тип REG_DWORD
.
Кстати, когда я создаю новое значение REG_DWORD
, мой код не может его прочитать:
Например, я создаю значение ниже:адрес как "test"
с 123
данными:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Но dwInstallDate
будет 0
вместо 123
:
RegQueryValueExA(hKey, "test", 0,
NULL, (LPBYTE)&dwInstallDate,
&dwBufferSize);
Любое предложение?Я запутался в этом действии ...