Есть ключ в реестре:
HKEY_CURRENT_USER\Software\Posix\NetStat
А у ключа есть значение
Downloaded
типа REG_SZ
со значением done
Пытаюсь считать его значение. Ничего не выходит.
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
int main() {
char buf[1024];
HKEY hKey = HKEY_CURRENT_USER;
ULONG result;
DWORD sz = 1024;
// open section and get hKey handler
result = RegOpenKeyExA(
hKey,
"Software\\Posix\\NetStat",
0,
REG_SZ,
&hKey);
if (result != ERROR_SUCCESS) {
cout << "Can't open section" << endl;
RegCloseKey(hKey);
}
// get desired value
result = RegGetValueA(
hKey,
"Software\\Posix\\NetStat",
"Downloaded",
RRF_RT_ANY,
NULL,
(LPDWORD)buf,
&sz);
if (result != ERROR_SUCCESS) {
cout << "Can't get value of Downloaded" << endl;
RegCloseKey(hKey);
}
system("pause");
return 0;
}
После выполнения первой функции result
равен 0. То есть первая функция работает.
После выполнения второй функции result
равен 2.
#define ERROR_FILE_NOT_FOUND 2L
Разумеется никакого значения функция в buf
не возвращает..
Вот ссылка на описание функции на MSDN. Только там RegGetValue()
.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724868(v=vs.85).aspx
В общем, проблема у вас, по всей видимости, тут:
result = RegOpenKeyExA(
hKey,
"Software\\Posix\\NetStat",
0,
REG_SZ,
&hKey);
В частности RegOpenKeyExA
изменяет значение &hKey
. Более того, использовать RegOpenKeyExA
вообще не имеет смысла, так как она просто открывает ключ в реестре, а вам нужно прочитать значение. И, как писали в комментариях выше, в документации есть флаг RRF_SUBKEY_WOW6464KEY
. Вот рабочий пример:
RegGetValueA(
HKEY_CURRENT_USER,
"Software\\Posix\\NetStat",
"Downloaded",
RRF_RT_ANY | RRF_SUBKEY_WOW6464KEY,
NULL,
(LPDWORD)buf,
&sz
);
Вызывать RegCloseKey
по всей видимости, тоже не нужно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как считать один байт из файла? Следующий код работает, но некоторые байты пропускаются (0x09, 0x0a, 0x0b, 0x0c, 0x0d) и считывается следующий за ними...
Мне нужно подключить прокси с авторизацией, я только разобрался с работой selenium, думал и с этим разберусь, но ничего не выходитВроде бы как...
Обработкой картинок не занималсяЕсть картинка - на белом фоне синие точки