Skocz do zawartości

RegQueryValueEx nie prawidłowy paramter


Zdzisiu

Recommended Posts

Problem polega na tym, że otwieram (jak nie istnieje to go tworzę) sobie klucz aby z niego odczytywać wartości. I nawet gdy dana wartość istnieje w rejestrze to funkcja zwraca błąd o kodzie 87. Po rozszyfrowaniu go przy pomocy FormatMessage otrzymuję "Paramter jest nieprawidłowy"
Oto ten kod:

case WM_CREATE:
        if (RegOpenKeyEx(HKEY_CURRENT_USER,regkey,0,KEY_ALL_ACCESS,&result)!=ERROR_SUCCESS)
       RegCreateKey(HKEY_CURRENT_USER,regkey,&result);
                                 
                         ZeroMemory(valvedir,MAX_PATH);
                         opres = RegQueryValueEx(result,"PakPath",0,NULL,(unsigned char *)&valvedir,NULL);//tu pobieram
                        
                         if (opres!=ERROR_SUCCESS)
                         {
                                 LPVOID lpMsgBuf;
 
                                 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
                                 NULL,opres,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                                (LPTSTR) &lpMsgBuf,0,NULL );

                  // Display the string.
                  MessageBox( NULL, (char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );

                   // Free the buffer.
                  LocalFree( lpMsgBuf );

Co robię nie tak jak trzeba

Link do komentarza
Udostępnij na innych stronach

Tworzysz nowy klucz,ale nic do niego nie zapisujesz więc nic nie możesz odczytać :) Poza tym ostatni parametr w RegQueryValueEx to adres zmiennej ktora zawiera rozmiar bufora do którego zapisać dane, a u ciebie jest 0. No i nie używaj RegCreateKey bo to jest dla 16 bitowych windowsów, zamiast tego użyj RegCreateKeyEx.

Link do komentarza
Udostępnij na innych stronach

Faktycznie, głupi błąd zrobiłem. Poprawiłem jak mówiłeś i już działa. To chyba ze zmęczenia bo piszę właśnie swój pierwszy program w czystym WinApi. Już przeszedłem męki z menu kontekstowym w trayu i SHBrowseForFolder(), ale na tym teraz kompletnie utknąłem. DZIEKI !

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...