Registry-Werte schreiben



  • hi,

    ich (unerfahren, anfänger) brauche mal wieder hilfe bei einem stück code.
    hier mein problem: ich muss in Regsitry-Werte schreiben, kriege es aber nicht hin.

    mein ansatz:

    typedef unsigned char uchar;
    typedef unsigned long ulong;
    
    #define wait() system("pause>nul") // ich weiß, geht auch anders
    
    HKEY  hkey;
    
      if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, //  Host-Key
                        "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",
                          //  Unerschlüssel
                        0,  //  immer NULL
                        KEY_READ, //  Zugriffsberechtigungen zum öffnen
                        &hkey //  HKEY-Handle
                      )
        )
      {
        textcolor(FG_RED);
        cout  <<  "Fehler: HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\"
              <<  "CurrentVersion\\Winlogon konnte nicht geoeffnet werden.\n"
              <<  "beliebige Taste zum Beenden ...\n";
        wait();
         exit(-1);
      }
    
        uchar *data = new uchar[256];
        data  = "0";
        ulong size  = 256;
      RegSetValueEx(  hkey,
                      "AutoAdminLogon",
                      0,
                      REG_SZ,
                      data,
                      size
                   );
    
      RegCloseKey(  hkey  );
    

    ... funktioniert nicht, der Wert bleibt (wahrscheinlich logischer Weise) unverändert.
    kann mir bitte jemand bei diesem wahrscheinlich ziemlich banalen problem helfen?

    vielen dank schon mal!
    mfg, julian



  • KEY_READ ist falsch.

    MfG,
    *Ranner*



  • Beim Programmieren bitte auch etwas nachdenken:

    KEY_READ, //  Zugriffsberechtigungen zum öffnen
    

    Du sagst doch selber, dass du schreiben willst. Jetzt überleg mal, ob KEY_READ dir da den Schlüssel mit den nötigen Berechtigungen öffnet.



  • ja, das hab ich auch schon gemerkt, aber auch mit KEY_ALL_ACCESS und KEY_WRITE ging es nicht, deshalb hab ich den post so stehen lassen, aber vergessen, zu korrigieren, sorry!

    jetzt weiß ich aber, woran es lag: die projekt-datei (C++BuilderX) war, warum auch immer, beschädigt, sodass keine fehlermeldungen ausgegeben wurden, aber das programm trotzdem nicht das gemacht hat, was es soll (kommt beim C++BuilderX manchmal vor).

    neues projekt->alte sources importiert->FUNKTIONIERT!

    mfg, julian


Anmelden zum Antworten