Visualizzazione risultati 1 fino 10 di 10

Discussione: [C] - Registro di sistema

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,755

    Exclamation [C] - Registro di sistema

    Salve a tutti.

    Che ci crediate o no, ho cercato su google (e qui) e non ho trovato nessun risultato .

    Come faccio a modificare il registro di sistema? (parlo di windows)
    Come faccio ad aggiungere una chiave, un valore....... Che fuzioni devo usare e/o che libreria?

    Al limite, se non c'é modo, andrebbe bene anche una chiamata a system()...

    Come da titolo, in C.

    Grazie,

    Ciao!

  2. #2
    Guest

    Predefinito

    Qui dovresti poter trovare qualcosa: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    E anche qui, più dettagliatamente: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    Ultima modifica di alessandro1997 : 29-12-2009 alle ore 10.30.52

  3. #3
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Ecco un esempio:
    Codice:
    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    int main() {
        TCHAR RegValueK[] = "NuovaChiave";            //nome della chiave da inserire!
        TCHAR RegValueN[] = "Valore della nuova chiave"; //valore della chiave da inserire
    
        HKEY chiave;
    
        if(RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE",&chiave))
            return -1;
    
        if(RegSetValueEx(chiave, RegValueK, 0, REG_DWORD, (const BYTE*)&RegValueN, sizeof(RegValueN)))
            return -1;
    
        RegCloseKey(chiave);
    
        cout<<"Valore scritto correttamente!";
    
    
        return 0;
    }
    Però prima di provarlo studiati le funzioni.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,755

    Predefinito

    @andreafallico: sebrano perfette quelle due funzioni ...grazie!.

    Però, visto che è C e non C++,
    ho fatto le seguenti modifiche:

    Codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    
    int main() {
        TCHAR RegValueK[] = "Nome";            //nome della chiave da inserire!
        TCHAR RegValueN[] = "Valore"; //valore della chiave da inserire
    
        HKEY chiave;
    
        if(RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE",&chiave))
            return -1;
    
        if(RegSetValueEx(chiave, RegValueK, 0, REG_DWORD, (const BYTE*)&RegValueN, sizeof(RegValueN)))
            return -1;
    
        RegCloseKey(chiave);
    
        printf("Valore della chiave salvata correttamente!");
        return 0;
    }
    ...va bene? Cioè nel registro effettivamente si creano le chiavi, ma dice che il valore non è valido; se poi ci clicco due volte il valore è corretto.

    Ah, un altro problemino: non lo dovrebbe salvare in HKEY_LOCAL_MACHINE\SOFTWARE ? perché a me lo crea in

    Grazie, Ciao!

    EDIT: ancora non ho studiato le funzioni, ma volevo provarlo

  5. #5
    Guest

    Predefinito

    Ma invece di complicarvi la vita non sarebbe più facile premere start => esegui => regedit

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,755

    Predefinito

    Citazione Originalmente inviato da zomer Visualizza messaggio
    Ma invece di complicarvi la vita non sarebbe più facile premere start => esegui => regedit
    No, perché lo devo fare fare al programa!...

  7. #7
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Ho visto la docum. aggiornata e RegCreateKey è ormai obsoleta e la devi sostituire con RegCreateKeyEx, poi in base al valore a RegSetValueEx devi passare una costante adeguata, per le costanti guarda qui: Registry Value Types.
    A RegSetValueEx invece di REG_DWORD deve essere passato REG_SZ.
    E soprattutto leggi qui: RegSetValueEx Function.
    Ultima modifica di andreafallico : 29-12-2009 alle ore 21.08.58

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,755

    Predefinito

    Grazie 1000!

    Ci studierò sopra

    Ciao!
    Ultima modifica di alemoppo : 29-12-2009 alle ore 16.50.19

  9. #9
    L'avatar di zingus
    zingus non è connesso Utente giovane
    Data registrazione
    02-09-2003
    Messaggi
    83

    Predefinito

    Ma invece di fare un programma, per riprendere la cosa di prima, non puoi eseguire un file .reg?

    Sono file di testo, se li apri con regedit, lui ne scrive il contenuto nel registro, e da regedit puoi esportare delle chiavi come testo.

    A seconda del caso, possono convenire.

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,755

    Predefinito



    Anche se è una discussione del 2009... comunque:

    Il fatto è che se eseguo un file *.reg mi chiede "vuoi aggiungere la chiave al sistema"?...

    Quindi, mettiamo che sto facendo un installazione (esempio banale) ed ho bisogno di settare le preferenze... Ogni volta l'utente dovrà cliccare "aggiungi" oppure "si" {non mi ricordo}... E se devo salvare 20 preferenze, un utente dopo 3 o 4 si scoccia e chiude il programma

    Ciao!
    Ultima modifica di alemoppo : 24-01-2010 alle ore 11.28.15

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •