Registry-Values Problem



  • Ok danke das wird der fehler sein lpData verweist auf garnichts anstatt des Buffers.
    Danke, kanns aber noch nicht probieren
    CU XBert

    EDIT: lpcbData ist doch der Buffer ??



  • lpcbData
    A pointer to a variable that specifies the size of the buffer pointed to by the lpData parameter, in bytes. When the function returns, the variable reeives the number of bytes stored in the buffer.



  • Danke ich kann selber MSDN lesen 😉



  • Ja, was RegEnumValue() aus den Parametern macht, kann jeder nachlesen. Die Frage ist nur, was für Werte hast DU dort übergeben? (und das geht nicht aus deinem Code hervor).

    PS: Falls du an der englischen Formulierung scheiterst: lpData ist ein Zeiger auf den Datenbuffer, lpcbData ist ein Zeiger auf ein int - in diesen mußt du vor dem Aufruf die Größe des Puffers eintragen und bekommst hinterher die Länge des rausgeschriebenen Registry-Eintrags reingepackt.



  • Danke aber ich scheitere nicht an der Übersetzung.
    Ich hab nur mein Programm gerade nicht in der Nähe und kann deshalb auch nicht nachschaun.



  • Morgen!
    Ich hab es gestern noch einmal probiert aber egal was ich mache ich mache es falsch. Es wird zwar jetzt kein Fehler mehr angezeigt aber dafür sonst auch nichts 😡

    CU XBert



  • XBert schrieb:

    Ich hab es gestern noch einmal probiert aber egal was ich mache ich mache es falsch. Es wird zwar jetzt kein Fehler mehr angezeigt aber dafür sonst auch nichts 😡

    Tja, und solange du CStolls Frage nicht beantwortest, wird sich daran wohl auch nichts ändern.

    Es wäre übrigens klug, den Wert, auf den lpcbData zeigt, in der Schleife immer wieder neu zu setzen, denn der Aufruf setzt ihn auf die tatsächliche Größe.



  • Ich weiß das die Folgende eine dumme Frage ist aber was meinst du mit Wert von lpcbData (lpcbData=1024???stimmt wohl nicht ).
    Ich sitz auf der Leitung 😕



  • XBert schrieb:

    Ich sitz auf der Leitung 😕

    Dann zeig doch endlich den relevanten Code, damit man dir helfen kann. Der Wert 1024 für lpcbData ist jedenfalls schlecht. Das muss ein Zeiger sein!



  • Es ist genau der code aus der MSDN nur mit den weiteren zwei Variablen lpData und lpcbData die beide leer sind.



  • XBert schrieb:

    Es ist genau der code aus der MSDN nur mit den weiteren zwei Variablen lpData und lpcbData die beide leer sind.

    Was sollen "leere" Variablen sein? NULL? Uninitialisiert? Man weiß es nicht, weil du deinen Code nicht zeigst!

    Willst du keine Hilfe?



  • Sie sind Initialisiert aber haben noch keien Wert.

    LPBYTE lpData;
    LPDWORD lpcbData;
    


  • XBert schrieb:

    Sie sind Initialisiert aber haben noch keien Wert.

    Sie sind uninitialisiert. Diese Zeiger zeigen also irgendwo in den Speicher. Die Funktion versucht, dorthin zu schreiben, und das knallt.

    Du musst ein hinreichend großes BYTE-Array und ein DWORD anlegen, in das DWORD die Größe des BYTE-Arrays schreiben und dann die Adressen der beiden übergeben.



  • Was versteht man unter Byte-Array ?

    So?

    Byte-Array = eine Zahl;
    DWORD temp=&Byte-Array;
    


  • XBert schrieb:

    Was versteht man unter Byte-Array ?

    Weißt du nicht, was ein Array ist?

    BYTE dasIstEinByteArray[42];
    

    XBert schrieb:

    DWORD temp=&Byte-Array;
    

    In das DWORD soll die Größe des Arrays, nicht seine Adresse. Kann es sein, dass du noch ziemlich große Lücken bei den Grundlagen hast? 😉



  • Das fürchte ich auch aber das Byte vor dem Array hat mich verwirrt weil ich nur char-Arrays kenne.


Anmelden zum Antworten