Tag zusammen,
ich hab eine Frage bezüglich der winAPI, bei der Benutzung der RegEnumKeyEX() habe ich jedes mal Probleme, mit dem Wert, der angibt, den wievielten Schlüssel er auflisten soll.
bei Microsoft steht zu diesem Parameter folgendes:
dwIndex
[in] Specifies the index of the subkey to retrieve. This parameter should be zero for the first call to the RegEnumKeyEx function and then incremented for subsequent calls.
Because subkeys are not ordered, any new subkey will have an arbitrary index. This means that the function may return subkeys in any order.
gesagt, getan, Problem ist nur, wenn in dem Schlüssel 3 Unterschlüssel sind und ich setze den Wert 3, so erhalte ich ERROR_NO_MORE_ITEMS, was nicht weiter Verwunderlich ist, wenn ich jedoch 2 einsetze, und eigentlich den Namen eines Unterschlüssels genannt bekommen sollte stürzt das Programm mit der Fehlermeldung: "Vorgang 'read' kann auf dem Speicher nicht ausgeführt werden" vollständig ab, deswegen meine Frage, ob jemand schon ein ähnliches Problem gehabt hat oder sogar Hilfe weiß.
erst mal vielen Dank
Ralf
Problem mit dem count parameter der RegEnumKeyEX_()
Also bei mir klappt das, wenn ich bei 0 anfange und solange hochzähle wie ich #ERROR_SUCCESS zurückbekomme.
Code: Alles auswählen
Procedure.s RegEnumKey(hKey.l, sKey.s, pc.s)
ret.l
hnd.l
vKey.s
vSize.l
vLWT.FILETIME
remhnd.l
Index.l
pc=UNC(pc)
ret=RegConnectRegistry_(pc, hKey, @remhnd)
If ret=#ERROR_SUCCESS
ret=RegOpenKeyEx_(remhnd, sKey, 0, #KEY_ALL_ACCESS, @hnd)
If ret=#ERROR_SUCCESS
Index=0
ret$=""
While ret=#ERROR_SUCCESS
vSize=255 : vKey=Space(255)
ret=RegEnumKeyEx_(hnd, Index, @vKey, @vSize, 0, 0, 0, @vLWT)
If ret=#ERROR_SUCCESS
ret$=ret$+vKey+"; "
ElseIf Index=0
ret$="*error: cannot enumerate keys*"
Else
ret$=Left(ret$,Len(ret$)-2)
EndIf
Index+1
Wend
Else
ret$="*error: cannot access key*"
EndIf
Else
ret$="*error: cannot access remote registry*"
EndIf
RegCloseKey_(remhnd)
ProcedureReturn ret$
EndProcedure
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en