Registry Wert ändern - Vorgehensweise?



  • Hey Jungs,

    leider werden mir nur kryptische Zeichen ausgegeben 😞 Hier mein Code:

    #include <conio.h>
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h> 
    #include <iostream> 
    
    using namespace std;
    
    int main(int argc, char *argv[]) {
    
    // #############
    
    HKEY hKey ;
    DWORD dwType;
    TCHAR szValue[100]; 
    DWORD dwSize = sizeof(szValue)*sizeof(TCHAR); 
    
    RegOpenKeyEx (HKEY_CURRENT_USER, "HKEY_CURRENT_USER\\AppEvents\\XXX_Key", 0, KEY_SET_VALUE, &hKey);
    
    LONG lRet = RegQueryValueEx(hKey, _T("EintragsName"), NULL, &dwType, (LPBYTE) szValue, &dwSize);
    
    RegCloseKey(hKey) ; 
    
    	printf(szValue);
    
    // ##############
    
    printf ("Press any key...");
    
    getch();
    
    return 0;
    
    }
    


  • RegOpenKeyEx(HKEY_CURRENT_USER, "AppEvents\\XXX_Key", 0, KEY_SET_VALUE, &hKey);
    


  • Hi, es geht leider immer noch nicht 😞



  • Dann benutze halt die CRegistry-Klase, die du auf meiner Homepage findest. Dann geht das so:

    CRegistry reg;
    reg.SetRoot(HKEY_CURRENT_USER);
    reg.OpenPath( TEXT("AppEvents\\XXX_Key") );
    
    TCHAR szValue[100];
    reg.ReadString(TEXT("EintragsName"), szValue, 100);
    


  • Du musst einfach das vierte Parameter von RegOpenKeyEx in KEY_READ ändern, dann klappt es. Sorry, das war mein Fehler, denn ich habe den Funktionsaufruf ja so gepostet. 😃

    Zeile 5 und 7 kannst du übrigens entfernen. Die brauchtst du in deinem Programm nicht!

    Mit freudlichen Grüßen

    WilMen



  • Also er zeigt jetzt nur noch ein Zeichen... Ein Smiley^^



  • Hallo xbug,

    also ich habe das Programm kompiliert und ausgeführt und alles hat geklappt. Ist der Schlüssel, dessen Wert du lesen möchtest, überhaupt schon erstellt?



  • Ja, ich habe es sogar mit einem anderen Key versucht 😞



  • #include <windows.h>
    #include <stdio.h>
    
    int main(int argc, char *argv[]) 
    {
     HKEY hkey; 
    
     char szBuffer[255];
     char KeyValue[255] ;
    
     unsigned long lBufferSize = 255;
    
     RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, KEY_READ, &hkey) ;
     RegQueryValueEx(hkey, "MenuShowDelay", NULL, NULL, KeyValue, &lBufferSize) ;
     RegCloseKey(hkey) ; 
    
     printf("Wert des Schluessels: %s",KeyValue, "\n\nPress any key...") ;
     getchar() ;
    
     return (0);
    }
    

    Kompiler mal dieses Code. Ich habe ihn mit dem "Dev-C++ 4.9.9.2" kompiliert und es funktioniert!

    Sollte es jetzt immer noch nicht funktionieren, dann muss es am Compiler liegen!



  • 😞 😞 😞

    14 C:\Dokumente und Einstellungen\Admin\Desktop\read.cpp invalid conversion from `char*' to `BYTE*'



  • Probier es mit einem expliziten Typ-Casting!

    // ...
    
    RegQueryValueEx(hkey, "MenuShowDelay", NULL, NULL, (BYTE *) KeyValue, &lBufferSize) ;
    
    // ...
    


  • Juhu, es geht^^ Und weshalb ging es bei dir und bei mir nicht?



  • Mit welchem Compiler arbeitest du? 😕



  • Eigentlich Standard... Also schon bei Dev C++ mitgeliefert. Gibt es denn bessere Alternativen?



  • Ich arbeite, wie gesagt, mit dem gleichen! Keine Ahnung, wieso es bei dir nicht geklappt hatte.

    Für private Zwecke reicht der Dev-C++-Compiler aus. Ich habe außerdem noch nie von einem anderen kostenlosen Compiler gehört, der so gut ist. Du kannst also getrost mit ihm weiterarbeiten! 😉



  • Okay, danke!



  • WilMen schrieb:

    Für private Zwecke reicht der Dev-C++-Compiler aus. Ich habe außerdem noch nie von einem anderen kostenlosen Compiler gehört, der so gut ist. Du kannst also getrost mit ihm weiterarbeiten! 😉

    Oha! Also erstmal ist der DEV-C++ kein Compiler, sondern eine IDE. Der Compiler ist IMHO der MinGW. Und ja, es gibt viel bessere und auch kostenlose IDEs, z.B. Code::Blocks. Der DEV-C++ wird im übrigen schon seit längerem nicht mehr weiterentwickelt. Es ist also nicht angeraten, mit dem weiterzuarbeiten.

    @xbug: Hasu du wenigstens mal meine KLasse ausprobiert?



  • Hi,

    ja habe ich auch. Es kam aber folgende Meldung:

    54 C:\Dokumente und Einstellungen\Admin\Desktop\test.cpp syntax error  before `.' token
    


  • @WebFritzi

    Ja stimmt, hast recht! 🙄



  • xbug schrieb:

    Hi,

    ja habe ich auch. Es kam aber folgende Meldung:

    54 C:\Dokumente und Einstellungen\Admin\Desktop\test.cpp syntax error  before `.' token
    

    Das war dann dein Fehler, denn er taucht in deiner cpp-Datei und nicht in der CRegistry.cpp auf. Kann mir aber nicht denken, welcher. Ist ja auch klar. Woher soll ich wissen, was bei dir Zeile 54 ist...?


Anmelden zum Antworten