Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Intercettare qualsiasi salvataggio file su win
giovedì 11 febbraio 2010 - 11.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
almax
Profilo
| Junior Member
175
messaggi | Data Invio:
gio 11 feb 2010 - 11:11
Salve, è possibile intercettare tramite applicazione che gira in background qualsisasi salvataggio che viene fatto su win?
potendo anche distinguere le estensioni ?
Quale strada devo prendere?
Grazie
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
gio 11 feb 2010 - 11:26
Ciao,
linguaggio ? Versione framework ? Altri dettagli utili ?
Help us to help you
My Blog...
http://blogs.dotnethell.it/Mark/
almax
Profilo
| Junior Member
175
messaggi | Data Invio:
gio 11 feb 2010 - 11:34
Intanto grazie per l'interesse ..
Linguaggio Vbnet Framework=> 2.0
Mi servirebbe capire quando win crea un file ex novo ed eventualmente quando sovrascrive un vecchio file ..
Esempio apro notepad scrivo salvo il file con nome appena salvato vorrei poter eseguire un'operazione..
esempio 2 apro file modifico salvo, come sopra vorrei poter eseguire un'operazione ..
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
gio 11 feb 2010 - 11:43
Ciao, ti interessa monitorare una specifica cartella o intercettare QUALSIASI evento di salvataggio a livello di sistema operativo ?
Potresti per favore spiegarmi un po' meglio cosa devi ottenere ?
Grazie
My Blog...
http://blogs.dotnethell.it/Mark/
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
gio 11 feb 2010 - 11:47
Una classe utile potrebbe essere la FileSystemWatcher :
http://msdn.microsoft.com/it-it/library/system.io.filesystemwatcher%28VS.80%29.aspx
Dipende però dal contesto e da quello che ti serve di preciso.
Ciao!
My Blog...
http://blogs.dotnethell.it/Mark/
almax
Profilo
| Junior Member
175
messaggi | Data Invio:
gio 11 feb 2010 - 12:04
Interessante, si avvicina molto alla soluzione .. Ti spiego quello che dovrei fare :
Apro il BlockNote e scrivo dei contenuti, vado su salva con nome e scelgo il mio nome al file e faccio salva ..
Appena salvato il file vorrei si aprisse una form che chiede se archiviare il file o no in una banca dati, la cosa potrebbe servire per file del pacchetto office, per file pdf etc etc .. Se decido di archiviare scelgo genere .. (varie opzioni) e scrivo su db un record con i dati del file data di creazione, titolo, peso, etc etc ..
Seconda possibilità, credo che la classe mi viene in aiuto, apro il vecchio file modifico il contenuto e risalvo intercetto l amodifica ed aggiorno i dati del record su db ... (il tutto perchè pensavo di inserire il file all'interno del db in campo blob per avere l'archivio a disposizione in maniera completa)...
Grazie
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
gio 11 feb 2010 - 14:04
La cosa non è così banale
Secondo me gli approcci sono due.
1 - Mediante la classe FileSystemWatcher puoi tenere sotto controllo qualsiasi attività di scrittura e modifica di qualsiasi cartella.
La cartella monitorata deve essere definita a priori... e qualsiasi attività di I/O riguardante altre cartelle non verrà presa in considerazione.
2 - Intercettare gli eventi del sistema operativo che gestiscono TUTTE le operazioni di I/O.
A mio avviso il primo caso è il più semplice da implementare ma ti impone di conoscere a priori il percorso delle cartelle monitorate.
Il secondo caso è più invasivo e meno semplice da implementare. Sto ancora cercando il sistema per intercettare i relativi eventi del sistema operativo ma non l'ho ancora trovato.
Personalmente, ammesso che per te sia una strada percorribile, limiterei l'intercettazione ad un numero limitato, ma preciso, di cartelle.
Potresti monitorare per esempio il Desktop, la cartella Documenti ed eventualmente una precisa share di rete.
In questo modo senza essere costretto a scomodare il sistema operativo potresti ottenere ciò che cerchi...ed anche archiviare automaticamente tutti i file salvati in una certa cartella. Tale sistema, unito ad un minimo di istruzione agli utenti, dovrebbe funzionare senza particolari difficoltà.
Cosa ne dici ?
Ciaooooo
My Blog...
http://blogs.dotnethell.it/Mark/
almax
Profilo
| Junior Member
175
messaggi | Data Invio:
gio 11 feb 2010 - 15:01
Si come soluzione non è male, ti chiedo questo, ma se io le cartelle le vado a rilevare dal db? Nel momento che io ho archiviato il file ho la radice della directory, l'unicva cosa che mi blocca è sul primo salvataggio ..
Con la classe watcher viene monitorato anche la nuova creazione di una file .. cioè se io faccio salva con nome e scelgo la directory monitorata posso catturare l'evento ? Le cartelle monitorate se ad esempio decido documenti è automatico che vado a beccare anche le sottocartelle o no ?
Per la seconda soluzione dovrei utilizzare le API ?
Grazie
MarKonE
Profilo
| Guru
2.074
messaggi | Data Invio:
gio 11 feb 2010 - 15:34
>Si come soluzione non è male, ti chiedo questo, ma se io le cartelle
>le vado a rilevare dal db? Nel momento che io ho archiviato il
>file ho la radice della directory, l'unicva cosa che mi blocca
>è sul primo salvataggio ..
Infatti a priori devi "sapere" quali sono le cartelle interessate.
>Con la classe watcher viene monitorato anche la nuova creazione
>di una file .. cioè se io faccio salva con nome e scelgo la directory
>monitorata posso catturare l'evento ?
Per essere precisi...non intercetti l'evento scatenato dalla funzione salva con nome... bensì *dopo* che è stato salvato il file intercetti la scrittura dello stesso sulla cartella.
In parole povere è la cartella ad essere monitorata costantemente..non la funzione Salva del software.
>se ad esempio decido documenti è automatico che vado a beccare
>anche le sottocartelle o no ?
Lo puoi decidere tu tramite la la proprietà IncludeSubdirectories :
http://msdn.microsoft.com/it-it/library/system.io.filesystemwatcher.includesubdirectories
(VS.80).aspx
Leggi qui per maggiore chiarezza sulla classe FileSystemWatcher :
http://msdn.microsoft.com/it-it/library/system.io.filesystemwatcher
(VS.80).aspx
>Per la seconda soluzione dovrei utilizzare le API ?
Credo proprio di si perchè non ho trovato la classe specifica.
>Grazie
Ciao!
My Blog...
http://blogs.dotnethell.it/Mark/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !