Newsgroup: it.comp.lang.delphi
Titolo: Come posso sapere se sono stati creati nuovi file?

Mi ricordo che l'antivirus McAffé controllava ogni file nuovo sull'hd senza
rallentare le prestazioni del computer!Come posso fare a Saper i nomi dei
file che nouvi che vengono via via creati?

file che nouvi che vengono via via creati?
Mah....l'unica soluzione che mi viene in mente č fare un ciclo sui file e
creare un file di Log con le informazioni.
A questo punto ogni volta che si riesegue il ciclo si vanno a confrontare i
valori con questo file e si controllano solo i file non presenti o quelli a
cui č stato modificato l'attributo
ftLastAccessTime. Per non rallentare le prestazioni č possibile che il
controllo venga effettuato negli Idle Time della CPU.
Io ti ho detto una possibile soluzione, ma sono il primo ad avere dei seri
dubbi che funzioni cosě!
Appena adesso mi č venuta in mente un'altra possibile soluzione forse un po'
+ seria. Il McAfee dovrebbe essere TSR, quindi notifica tutte le aggiunte di
nuovi files e poi controlla solo quelli. Cmq il tutto non mi sembra poi cosě
semplice!
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support

 semplice!
Okkio che "TSR" andava bene in DOS, ma sotto windows non credo si possa
chiamare in questo modo.
"Terminate and Stay Resident" Termina e rimani attivo...
Il dos non era multi-tasking, quindi l'unico modo per avere due programmi
contemporaneamente era usare 'sto sistema.
Winsoz è un sistema inoperativo multitasking, quindi più processi con più
thread posso essere eseguiti in contemporaneo (su NT/2000 con 2 o +
microprocessori) o semi-contemporaneo (multitasking preemptive - windows
95/98).
Immagino che Mcafee, diciamo in generale tutti i programmi che monitorizzano
il pc (Norton Uninstaller - Antivirus - non so - ...)  installano delle
librerie che vengono legate al sistema operativo. E' quindi il sistema
operativo che informa quello che succede.
La cosa non è attiva (il programma credi dei log per confrontarli) ma
passiva ( è il sistema stesso che li informa).
Il secondo esempio consuma molte meno risorse.
Non ho idea di come legarsi al sistema operativo. Immagino che il discorso
sia simile agli Hook: una catena
Una applicazione registra una sua estensione (intendo una sua DLL, VXD o non
so cosa) in windows. Windows lo mette in catena.
Ogni volta che accade un evento, il messaggio passa ogni anello della catena
fino all'ultimo.
Se qualcuno mi può dare delucidazioni su questo argomento, ne sarei
veramente felice.
Matteo


> Mi ricordo che l'antivirus McAffé controllava ogni file nuovo
sull'hd senza rallentare le prestazioni del computer!Come posso fare a
Saper i nomi dei file che nouvi che vengono via via creati?
<<
Si può utilizzare l'API FindFirstChangeNotification sulla root del
disco da controllare, specificando TRUE per bWatchSubtree. Questo per
come può essere fatto. Riguardo alle prestazioni non so. Ci dovrebbe
essere un componente delle Rx che ingloba il tutto.
hth
Paolo Arosio
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 veramente felice.
Ciao,
         la FindFirstChangeNotification che vi ha già suggerito Paolo Arosio
è la soluzione + immediata e pulita in questo caso, per quel che descrivi tu
so che è possibile creare delle ShellExtension che vengono richiamate in
determinati casi (io ne ho vista una che viene richiamata quando elimini un
file, quando lo copi... tra l'altro mi pare che ce ne sia una simile anche
negli esempi di D4...)
Altrimenti vi date al reverse engineering e fate come un mio carissimo amico
che è andato a modificare la Shell32 DLL per essere informato su quando un
file viene aperto...
Ve lo sconsiglio se non siete + che ferrati in ASM e formati eseguibili ;-)
Ciao :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply

 Ve lo sconsiglio se non siete + che ferrati in ASM e formati eseguibili
;-)
... scusa la domanda ingenua... : ovviamente *non* aveva i sorgenti... vero?
Perchè qualche tempo fa stavo provando a "modificare" la kernel32.dll,
importandola in una
mia dll (qualcosa tipo ereditarietà, come concetto), il tutto funzionava con
poche funzioni della
stessa... ma dava grossi problemi (il progetto fallì, ahimè!) quando andavo
a specificare tutte le altre
funzioni... Non è che mi mancava qualche pezzo di puzzle che ora tu potresti
darmi ?  8)
Ciao!! Davide DG

 darmi ?  8)
Mah, sicuro di aver esportato tutto correttamente? [calling conventions
incluse?]
Cmq dubito che sia una strada percorribile: anche tralasciando l'overhead
mica da ridere cui sottoponi il sistema, la Kernel32.DLL è un tantino
complessa, penso che esporti anche interfacce COM [la Shell32.DLL sono
sicuro, il Kernel non saprei] e altre diavolerie varie... ;-)


 incluse?]
eheh ... no, ovviamente!! Cmq č un progetto nel dimenticatoio... rimane lě
finchč
non saprň qualcosa in piů oppure finchč avrň poco spazio su hd ... :)
Ciao! Davide DG