Adgang til Windows-registreringsdatabasen under GCC/C ++

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at få adgang til Windows-registreringsdatabasen ved hjælp af standard windows api.
Jeg bruger mingw c ++ compiller.


Fortæl, hvorfor denne kode crases på linje (X)


HKEY hKey;
DWORD dwDisp = 0;
LPDWORD lpdwDisp = &dwDisp;


QString value='String Value';


LONG iSuccess = RegCreateKeyEx(
      HKEY\_CURRENT\_USER,
      TEXT("HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"),
      0L,
      NULL,
      REG\_OPTION\_NON\_VOLATILE,
      KEY\_ALL\_ACCESS,
      NULL,
      &hKey,
      lpdwDisp);

if(iSuccess == ERROR\_SUCCESS)
{
(X)    RegSetValueEx(hKey, TEXT("1234"), 0, REG\_SZ, (LPBYTE)4, 4+1);
}


Debugger viser Segmantation fejl på denne linje.


Mange tak for hjælp. Jeg er ny til Windows API.

Bedste reference


Se på funktionsbeskrivelsen igen. [11]


Hvis du vil angive standardværdien for nøglen, skal du gøre noget som dette:


TCHAR szData[] = TEXT("1234")
RegSetValueEx(hKey, NULL, 0, REG\_SZ, (LPBYTE)szData, sizeof(szData));


Hvis du rent faktisk vil angive værdienavnet:


TCHAR szData[] = TEXT("1234")
RegSetValueEx(hKey, TEXT("valuename"), 0, REG\_SZ, (LPBYTE)szData, sizeof(szData));


Registret har en noget forvirrende terminologi. Nøglen i denne sammenhæng betyder i grunden 'mappe'. Hver mappe har en standardværdi og kan indeholde andre værdier med angivne navne. Du sender null, hvis du vil angive standardværdien og en streng, hvis du vil navngive værdien. Disse værdier vises som 'filer' i nøgle 'mappe', når du ser i registerredigeren.

Andre referencer 1


Casts er dårlige.


Hvad forventer du (LPBYTE)3 at gøre? Hvorfor tror du, du har brug for det?


Er det ikke, hvor value skal bruges? Måske som value.ascii() eller value.constData() (afhængigt af om UNICODE er defineret)? QString value mystisk forsvundet fra spørgsmålet)

Andre referencer 2


Fjern HKEY\_LOCAL\_MACHINE \ fra den anden parameter, og det skal fungere fint.
HKEY\_LOCAL\_MACHINE skal indstilles i den første parameter.