registry



  • Hallo!
    Frage: Wie kann ich in der Registry unter irgendeinem bestimmten Schlüssel einen neuen Namen (Wert) erzeugen?

    Ausschnitt:

    HKEY hkey;
    char dest[256]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";

    if (RegOpenKeyEx(HKEY_CURRENT_USER,dest,0,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
    {
    if (RegSetValue(HKEY_CURRENT_USER,dest,REG_SZ,"Hallo",256)==ERROR_SUCCESS)
    printf ("OK");
    }

    Will jetzt unter dem Schlüssel Run einen Wert anlegen. Wie funkt des??



  • HKEY  hKey ;
    DWORD dwVersion = 0 ;
    
    RegOpenKeyEx (HKEY_CURRENT_USER, "Software\\EArchiver", 0, KEY_ALL_ACCESS, &hKey) ;
    RegSetValueEx (hKey, "Path", 0, REG_SZ, (BYTE*) "c:\", strlen ("c:\")) ;
    RegSetValueEx (hKey, "Version", 0, REG_DWORD, (BYTE*) &dwVersion, sizeof (DWORD)) ;
    RegCloseKey (hKey) ;
    

    ist nur ein Bsp. der Rest steht in den FAQ



  • HKEY nenKey;
    DWORD cbData;
    char app[1000];
    
    strcpy(app,"c:\\pfad\\Zu\\Deinem\\Programm.exe");
    cbData=lstrlen(app)+1);
    
    RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_READ|KEY_WRITE,&nenKey);
    
    RegSetValueEx(nenKey,"nenProgramm",0,REG_SZ,app,cbData); // <= In der Zeile liegt dein Fehler!
    // ...da haste nämlich als "value" nen Key angegeben (2. Parameter!)
    

    [ Dieser Beitrag wurde am 02.02.2003 um 22:14 Uhr von geeky editiert. ]



  • Danke danke!



  • Hallo nochmal!

    Hab den Programm - Code von geeky ausprobiert! Mein VC - Compiler meldet folgende Fehlermeldung:
    error C2664: 'RegSetValueExA' : Konvertierung des Parameters 5 von 'char [1000]' in 'const unsigned char *' nicht moeglich
    Was tu ich da dagegen?



  • Probier's mal so, wie es in den FAQ steht:

    BYTE cString[]="Hallo, das ist der eigentliche Wert, der unter dem Namen EintragsName gespeicehrt wird";
    RegSetValueEx(hKey,"EintragsName",0,REG_SZ,cString,strlen(cString)+1);
    


  • Danke! Funkt so!
    Nur jetzt hab ich das Problem, dass ich den aktuellen Dateipfad auf einen char[255] gespeichert hab. Weiss nicht, wie ich den String jetzt auf unsigned char speicher! Kann mir da nochmal jemand helfen?



  • so wie ich es oben gemacht habe (BYTE*)



  • Huch, casten vergessen 😉


Log in to reply