C++ Const* BYTE

0

Witam może mi ktoś wytłumaczyć dlaczego gdy dodaje drugi klucz zostają śmieci. Pierwszy i drugi klucz ładnie się tworzy, lecz gdy chce przypisać drugiemu inną wartość pierwszy dodaje się dobrze a drugi ma dziwne wartości. Z góry dzięki za pomoc.

Kod (C++):

    const BYTE * buf =( const BYTE * )"\0";

    RegCreateKeyEx( HKEY_LOCAL_MACHINE, "Software", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, & klucz, & Nowy );
    RegSetValueEx( klucz, "test", 0 , REG_DWORD, buf, 4);
    RegCloseKey( klucz );

    const BYTE * lpData =( const BYTE * )"\1";

    RegCreateKeyEx( HKEY_LOCAL_MACHINE, "Software", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, & klucz, & Nowy );
    RegSetValueEx( klucz, "test2", 0 , REG_DWORD, lpData, 4);
    RegCloseKey( klucz ); 


0

Podajesz że długość jest 4 bajty zaś masz tylko jeden, efekt może być dowolny nawet wykrzaczenie się programu.

0

Jeśli zmienię ilość bajtów wpis dodaje się z wartością: "(niewłaściwa wartość DWORD (32-bitowa))" możesz mi to wytłumaczyć bardziej łopatologicznie nie ogarniam tego const BYTE* będę się chyba musiał douczyć :D

1

Skoro chcesz zarejestrować DWORD to musisz przekazać 4 bajty tego DWORD'a, np:

DWORD value=666;
RegSetValueEx(klucz, "test", 0 , REG_DWORD, (BYTE*)&value, 4);
0

Dzięki za pomoc, teraz działa tak jak chciałem i wiem gdzie zrobiłem błąd. Idę dalej walczyć z kodem :D Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1