PDA

Visualizza la versione completa : [C] Aggiungere una chiave al Registro di Configurazione


=tW=
20-12-2006, 00:48
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:

#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;
}

oregon
20-12-2006, 01:19
Ma perche' segui questa strada per aggiungere chiavi al registro?

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

Ad esempio



#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);
}

=tW=
20-12-2006, 22:57
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?

MItaly
20-12-2006, 23:03
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).

=tW=
20-12-2006, 23:23
ma la platform SDK va bene x il c normale? scusa, ho appena inziato

MItaly
20-12-2006, 23:25
Certo (considerato che la maggior parte di Windows è scritta in C ci si stupirebbe del contrario... :) ).

oregon
21-12-2006, 02:40
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 ...

=tW=
21-12-2006, 11:36
ok, grazie mille per l'aiuto, volo sul sito delle MSDN...grazie grazie grazie

Loading