• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ Odczytywanie wartości z rejestru

Object Storage Arubacloud
+1 głos
1,033 wizyt
pytanie zadane 18 sierpnia 2016 w C i C++ przez Krzysztof Rak Bywalec (2,420 p.)
edycja 18 sierpnia 2016 przez draghan

Witam, w jaki sposób odczytać wartość z rejestru? Korzystałem z tego kodu:

http://stackoverflow.com/questions/34065/how-to-read-a-value-from-the-windows-registry

Działa na większości kluczy typu DWORD ale nie wiem dlaczego są takie, których po prostu nie odczytuje, zwraca pusty wynik, bądź wartość domyślną. Naszukałem się już sporo na dzisiaj i idę spać. Co z tym zrobić? :)

3 odpowiedzi

0 głosów
odpowiedź 18 sierpnia 2016 przez Krzysztof Rak Bywalec (2,420 p.)
 
Najlepsza

Znalazłem rozwiązanie, dzięki za wszelką pomoc. Gdyby ktoś miał podobny problem, należy dodać flagę KEY_WOW64_64KEY:

LONG lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_WOW64_64KEY | KEY_READ, &hKey);

Więcej informacji tutaj: 

https://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx

Tylko ciekawi mnie czy teraz będzie działać na Windowsach 32-bitowych?

 

+3 głosów
odpowiedź 18 sierpnia 2016 przez maly Nałogowiec (37,190 p.)

Działa na większości kluczy typu DWORD ale nie wiem dlaczego są takie, których po prostu nie odczytuje

Których nie da się odczytać?

2
komentarz 18 sierpnia 2016 przez obl Maniak (51,280 p.)

Dobre pytanie, zważywszy na fakt, że w podanym linku są implementacje trzech funkcji przeznaczonych do obsługi trzech różnych typów kluczy zawierających typ: DWORD, bool lub string

komentarz 18 sierpnia 2016 przez Krzysztof Rak Bywalec (2,420 p.)
Korzystałem z tej do odczytywania wartości DWORD i próbowałem odczytać nią tylko takie wartości. Wartość, która mnie interesuje to: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion -> InstallDate
1
komentarz 18 sierpnia 2016 przez maly Nałogowiec (37,190 p.)
Ale dostajesz błąd odczytu czy odczytuje błędną wartość?
komentarz 18 sierpnia 2016 przez Krzysztof Rak Bywalec (2,420 p.)
Po prostu zwraca zero, próbowałem też w AutoIt na skrypcie, z którym na 100% działało i jest to samo również zwraca 0. Może to przez Windows 10?
0 głosów
odpowiedź 18 sierpnia 2016 przez Krzysztof Rak Bywalec (2,420 p.)

Robię to w ten sposób 


HKEY hKey;
LONG lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_READ, &hKey);
bool bExistsAndSuccess (lRes == ERROR_SUCCESS);
bool bDoesNotExistsSpecifically (lRes == ERROR_FILE_NOT_FOUND);
DWORD strValueOfBinDir;
std::wstring strKeyDefaultValue;
GetDWORDRegKey(hKey, L"InstallDate", strValueOfBinDir, NULL);
ostringstream stream;
stream << strValueOfBinDir;
string str = stream.str();
MessageBox(NULL, UTF8_To_UTF16(str).c_str(), (LPCWSTR)L"Wartość", MB_ICONINFORMATION | MB_OK);

Zwracana wartość to 0 tak jakby ten klucz nie istniał ale przecież jest tam.

Tutaj już zwraca prawidłową wartość:

GetDWORDRegKey(hKey, L"UBR", strValueOfBinDir, NULL); 

Podobne pytania

+1 głos
1 odpowiedź 635 wizyt
pytanie zadane 5 listopada 2018 w Assembler przez DeBos123 Nałogowiec (44,950 p.)
0 głosów
1 odpowiedź 187 wizyt
pytanie zadane 3 lutego 2018 w Assembler przez KubenQPL Maniak (62,820 p.)
0 głosów
0 odpowiedzi 64 wizyt
pytanie zadane 26 maja 2020 w Rozwój zawodowy, nauka, praca przez Ytemeriku Początkujący (370 p.)

92,638 zapytań

141,514 odpowiedzi

319,901 komentarzy

62,018 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...