PDA

View Full Version : [C#] Richiedere all'OS di eliminare dei file/directory appena è possibile


DooM1
07-03-2011, 11:43
Ciao, sto scrivendo un programma, ma senza entrare nel merito di questo per ora, mi serve un comportamento come fa winrar.
Non so se l'avete mai notato, ma quando eseguite un programma direttamente da dentro un RAR, WinRAR estrae il RAR dentro la directory %temp% dell'OS e esegue il file da li.
Poi anche se si chiude winrar (da taskmanager il processo non c'è più), noto che c'è una qualche funzione evidentemente non implementata dentro winrar.exe che cancella quei file temporanei appena non sono più in uso.

In altre parole, appena chiudo l'applicazione che avevo eseguito da dentro il RAR, i file che winrar aveva estratto in automatico su %temp% vengono cancellati; questo anche se winrar era già stato chiuso.
È interessante perchè funziona anche se winrar, o nel mio caso la mia applicazione, è stato chiuso.

Immagino che ci sia una qualche funzione dell'OS o del framework o non so dove, che permetta di farlo.
Mi sapere dire di più?
Non sono riuscito a trovare nulla su google, anche un aiuto su una possibile query sarebbe gradito :D

Grazie in anticipo.

banryu79
07-03-2011, 13:29
Non sono riuscito a trovare nulla su google, anche un aiuto su una possibile query sarebbe gradito :D

Ho usato la stringa: "C# File deletion", ti posto il link al primo risultato che ho trovato:
http://stackoverflow.com/questions/400140/how-do-i-automatically-delete-tempfiles-in-c

DooM1
09-03-2011, 14:14
Grazie, è evidente che non so cercare :D
Ci ho provato un po' ma non ci sono riuscito. Ci riproverò meglio, comunque ho un buon punto di partenza.

La mia perplessità è che più che altro li ho visto come creare un file temporaneo che poi venga eliminato. Io invece il file ce l'ho già, lo devo eseguire e poi quando l'esecuzione termina va cancellato.
Comunque seguiterò a provare.

banryu79
09-03-2011, 16:36
Ok, visto che i "C-sharpisti" latitano, azzardo io una risposta.
Se consulti MSDN vedrai che c'è una versione di CreateFile che accetta, tra gli altri, un parametro di tipo FileOptions (è un Enumeration).

Se consulti la pagina relativa a FileOption vedrai che continete un membro dal nome DeleteOnClose.

Link:http://msdn.microsoft.com/en-us/library/system.io.fileoptions.aspx