Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] - chiavi di registro

    Ciao ragazzi...ho scritto questo programma per aggiungere una chiave di registro...ma...non la aggiunge!!! anche se non so dove sia l'errore, perchè il regedit lo esegue, ma non aggiunge proprio il contenuto della chiave... cosa ne pensate?

    ecco il codice:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define PATHKEY "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run]"
    #define VERSION "REGEDIT4"
    #define TYPE "REG_SZ"
    
    int main()
    {
        //dichiarazione delle variabili
        char path[512];
        char path2[512];
        char c;
        int i,j;
    	FILE *fp;
    
    	//richiesta del file da aggiungere
    	printf("Inserisci il file da aggiungere:\t");
    	scanf("%s", path);
    
    
        //se riesce ad aprirlo
        if(fp=fopen("log.reg","w")){
            //scrive sul file
            fprintf(fp,"%s\n\n%s\n\"new\"=\"%s:%s\"",VERSION,PATHKEY,path,TYPE);
            //chiude il file
            fclose(fp);
            //aggiorna il registro
            system("regedit.exe log.reg");
            //cancella la chiave
            system("del log.reg");
        }else{
            //altrimenti restituisce un errore
            printf("\n\nImpossibile creare il file");
        }
    	return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma perche' segui questa strada per aggiungere chiavi al registro?

    Esistono le apposite API di Windows per gestire il registro ...

    Ad esempio

    codice:
    #include <windows.h>
    
    #define SIZE 60
    
    void main()
    {
       char buffer[SIZE];
       strcpy(buffer, "C:\\TuaCartella\\TuoFile.ext");
    
       HKEY software, mykey;
       RegCreateKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\", &software);
       RegCreateKey(software, "Run", &mykey);
       RegSetValueEx(mykey, "Tuo programma", NULL, REG_SZ, (LPBYTE)buffer, SIZE);
       RegCloseKey(mykey);
       RegCloseKey(software);
    }

  3. #3
    ho scelto questa soluzione perchè non conosco le funzioni di windows.h e non ho trovato un elenco delle funzioni che contiene da nessuna parte, ho cercato anche su google, tu x caso conosci qualche guida?

  4. #4
    Originariamente inviato da =tW=
    ho scelto questa soluzione perchè non conosco le funzioni di windows.h e non ho trovato un elenco delle funzioni che contiene da nessuna parte
    Coooome? E la MSDN dove la metti? È una delle documentazioni meglio fatte in circolazione, volendo puoi scaricarti il Platform SDK per avere tutto il necessario per programmare in C/C++ con le API (documentazione, files di include, librerie statiche e tool vari).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    ma la platform SDK va bene x il c normale? scusa, ho appena inziato

  6. #6
    Certo (considerato che la maggior parte di Windows è scritta in C ci si stupirebbe del contrario... ).
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da =tW=
    ho scelto questa soluzione perchè non conosco le funzioni di windows.h e non ho trovato un elenco delle funzioni che contiene da nessuna parte, ho cercato anche su google, tu x caso conosci qualche guida?
    Ed e' questo il tuo principale problema ... non il codice che non funziona ma il fatto che hai iniziato con il piede sbagliato ...

    L'insieme di funzioni su cui si basa Windows (almeno quelle che costituiscono l'interfaccia su cui i programmatori C/C++ si possono basare) e' pubblico e lo trovi su Internet nel sito MSDN. Ovviamente, in libreria, esistono una marea di libri sull'argomento ...

  8. #8
    ok, grazie mille per l'aiuto, volo sul sito delle MSDN...grazie grazie grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.