Werte aus Registry auslesen funktioniert nicht
-
mit meinem folgenden programm möchte ich werte und den namen der schlüssel auslesen.
char val[150]; unsigned long maxi = 255; char *name = new char[100]; char ori_name[50] = "SysDown"; bool check_ok = false; retCode = ERROR_SUCCESS ; char *lpData = new char[300]; unsigned long lptype, lpcData = sizeof(lpData)*300; for (int i = 0; retCode != ERROR_NO_MORE_ITEMS; i++) { retCode = RegEnumValue(handle,i, name, &maxi, 0, &lptype, lpData, &lpcData); if (retCode == (DWORD)ERROR_SUCCESS){ ShowMessage(name); ShowMessage(lpData); } if (retCode == (DWORD)ERROR_MORE_DATA) ShowMessage("More_Data"); }doch leider gibt immer nach dem 2. eintrag die funktion RegEnumValue den error code ERROR_MORE_DATA zurück. ich müßte doch genug speicher reserviert haben.
ich habe schon mit vielen einträgen rumprobiert, immer spätestens nach dem zweiten eintrag bricht meine schleife ab obwohl noch mehrere einträge vorhanden wären. hoffentlich kann mit jemand weiterhelfen, danke mal im voraus
-
Wenn du die Beschreibung von RegEnumValue ansiehst, wirst du sehen, dass der vierte Parameter auch als Ausgabewert benutzt wird. Dort schreibt die Funktion nämlich die Länge des Wertnamens rein. Es reicht also nicht, diesen Wert einmal zu setzen, du musst das vor jedem Aufruf tun.
-
ok, danke, werds mal versuchen
