MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > C/C++



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 09-11-2009, 23:09   #1 (permalink)
Nuovo della community

 
2 Messaggi

Lumezius novizio della comunita' ( + 10 )
Question Scrittura su un file in C++

Salve a tutti mi sono appena iscritto al forum, vorrei chiedere un aiuto a qualcuno che mastica C++ meglio di me. Descrivo il problema, ho scritto un programma che scrive una chiave di registro per avviarsi automaticamente al Boot (Don't worry nn è un virus), riporto le linee di codice della funzione che imposta la chiave:
codice:
void RunRegistry()
{
//Dichiariamo una variabile per la directory corrente
TCHAR szModule [MAX_PATH];

//Valuta il posizionamento attuale
GetModuleFileName(0,szModule,MAX_PATH);

char buffer[512];
HKEY software;

//Mette in "buffer" il percorso
strcpy(buffer,szModule);

//memorizza la grandezza della variabile unsigned.
unsigned long size = strlen(buffer);

//apre ad esempio la chiave "run"
RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",&software);

//inserisce il percorso 
RegSetValueEx(software,"WINLOGS",NULL,REG_SZ,(LPBYTE)buffer,size);

//chiude
RegCloseKey(software);

}
questa funzione FUNZIONA (scusate il gioco di parole) egregiamente. il problema sta nel fatto che, il programma scrive un semplice file txt, se lancio il programma io (per capirci ci faccio doppio clik ) il file viene scritto, se riavvio il sistema e faccio in modo che sia il sistema operativo a caricare il programma il file nn viene scritto più O_O. Qualcuno mi sa dare una mano?! Lascio sotto il codice della funzione che scrive il file:
codice:
FILE *logfile = fopen(LOG_FILE, "a");

     if(logfile != NULL) // se si ha accesso al file scrive, altrimenti lascia perdere l'operazione
     {
          fprintf(logfile, "%s", temp); // aggiunge al file il contenuto della stringa temp
          fclose(logfile);
     }
Spero che qualcuno possa aiutarmi Grazie!!!


Ultima modifica di bottomap : 10-11-2009 a 08:45. Motivo: formattato codice
Lumezius non è in linea   Bookmark and Share Rispondi quotando
Vecchio 10-11-2009, 08:54   #2 (permalink)
Moderatore Globale

 L'avatar di bottomap

 
2,935 Messaggi

bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )
Ciao,

Il programma che viene lanciato lo hai scritto tu? E la variabile o costante LOG_FILE cosa contiene?

E'possibile che il file sia finito in C:\ ,in C:\WINDOWS o in C:\WINDOWS\SYSTEM32... hai controllato? Se in LOG_FILE hai un path relativo o un nome di file privo di path, verrà usata la "directory corrente".
Quando lanci l'eseguibile con un doppio click, in genere la directory corrente è ben definita e generalmente la cartella da cui avvii lo stesso. Se l'eseguibile lo avvia il sistema, non è detto che la directory corrente sia quella del programma. Proprio per questo nella chiave inserisci un path assoluto e non relativo (dovrebbe funzionare solo se l'eseguibile è in una cartella di sistema o nel path).

Se hai modo di toccare i sorgenti dell'eseguibile lanciato, potresti modificarlo molto velocemente in modo che provveda lui a salvare l'eseguibile in un path assoluto piuttosto che relativo.

Ciaociao
__________________


Venite a farmi un saluto su http://www.bottomap.com/

- Come porre domande in modo intelligente
- Hai mai dato un'occhiata al
Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
- Se un utente ti è stato d'aiuto usa il pulsante Commenta Intervento per aumentare la sua reputazione!

"La violenza è l'ultimo rifugio degli incapaci" - I.Asimov
(per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)
bottomap non è in linea   Bookmark and Share Rispondi quotando
Vecchio 10-11-2009, 19:11   #3 (permalink)
Nuovo della community

 
2 Messaggi

Lumezius novizio della comunita' ( + 10 )
Ok la variabile LOG_FILE contiene semplicemente il nome del file nn l'inter path, ora provo a modificarlo con un percorso che conosco e valuto se riesce a creare il file, in ogni caso grazie per il consiglio.
Lumezius non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum


Tutti gli orari sono GMT +2. Attualmente sono le 09:56.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.