Tutorial C# – Pplware Monitor
Olá a todos. Hoje vou-vos falar do controlo FileSystemWatcher e para isso nada melhor que construir uma aplicação para vermos as potencialidades deste poderoso controlo, simples de usar.
O que é e para que serve?
Este controlo vem facilitar muito a monitorização de ficheiros e pastas, de forma muito simples e intuitiva podemos ver se um ficheiro foi alterado, apagado, criado e renomeado. Lembras-se deste post?
Para isso este objecto disponibiliza-nos 4 eventos:
- Changed -> Quando há uma alteração na pasta ou ficheiro
- Created -> Quando há criação de uma pasta ou ficheiro
- Renamed -> Quando um ficheiro ou pasta é renomeado
- Deleted -> Quando um ficheiro ou pasta é apagado
Estes eventos são disparados assim que alteramos o estado do que estamos a monitorizar.
Para definir o que monitorizar temos estas propriedades:
- Path -> Pasta a monitorizar.
- IncludeSubdirectories -> Se desejar que sub directórios existentes na pasta que está a monitorizar também sejam monitorizados.
- Filter -> Caso deseje apenas monitorizar um tipo de ficheiro, por exemplo ficheiros do tipo *.exe. Ou então o nome completo de um ficheiro, assim só monitoriza esse ficheiro.
Com estas propriedades e eventos do Objecto estamos prontos para monitorizar uma pasta ou ficheiro(s) de uma maneira muito simples e sem muito trabalho.
Aplicação:
A nossa aplicação vai monitorizar a pasta que escolhemos e os ficheiro(s) nela contidos. Depois de cada alteração a aplicação guarda um histórico num ficheiro XML, que depois poderemos ver na janela de histórico.
Nesta imagem podemos ver como vamos tratar os eventos. Todos eles criam uma instância da Classe “DadosFicheiro” que faláramos depois, e passam para esse objecto a localização e o nome do ficheiro alterado e qual o tipo de acção que disparou o evento. Como podem ver o evento “renamed” dá-nos acesso ao nome actual e nome anterior do ficheiro que alteramos.
A classe “DadosFicheiro” tem as propriedades Nome, Acção e datas do ficheiro alterado.
Nesta imagem vemos a nossa classe que tem o atributo [Serializable] que nos vai permitir serializar para XML a classe (já abordamos este tema num tutorial anterior). Temos também uma variável FileInfo que nos vai pemitir aceder aos atributos do ficheiro que foi alterado como o nome e as datas de alteração.
A função “Alterações “ vai serializar para xml a nossa classe, para isso temos que des-serializar o xml para uma lista de “DadosFicheiro” ou seja o xml é sempre todo escrito de novo. Nesta imagem podem ver os métodos que invocamos para serializar e des-serializar.
E temos também o método que devolve uma lista de “DadosFicheiro” que irá servir para preencher o histórico.
Que é preenchido desta maneira.
Chamamos o método getHistorico() que preenche a grid. Guardamos nas settings da aplicação as directorias e o filtro como já fizemos anteriormente.
Com este objecto disponibilizado pelo .NET podemos fazer programas muito facilmente para auditorias, por exemplo um serviço Windows que monitoriza ficheiros e nos envia alertas para o mail, um sistema de backups, etc.
Download: Código Pplware Monitor [302.65KB]
Por hoje é tudo espero que gostem da aplicação, comentem e boa programação.
Licença: Freeware
Sistemas Operativos: Windows XP/Vista/Win7
Download: PplwareMonitor 1.0.0.0 [58.89KB]
Homepage: Pplware
Este artigo tem mais de um ano
Poderá ser muito útil numa organização empresarial, para gestão de documentos, ou até para monitorizarmos nos nossos pc’s ficheiros importantes que possam eventualmente ser passíveis de ser “atacados”.
http://www.fibrosom.com
A pesquisar por algo do genero. Muito Obrigado!!
Estava procurando uma ferramentas desta.
Gostei do relatório, é possivel saber qual usuário do windows fez alteração..?
Está bem explicado, mas tenho que aprender muito programação ainda..
Valeuuu
Mais um excelente post! É assim que vamos aprendendo! Muito obrigado!
######, metam o formato das imagens em png!! certamente nao sou so eu com olhos..
excelente comentario… mas aqui entre nos ja experimentaste clickar em cima das imagens?
OFF TOPIC
por acaso o Sr.Henrique graça (autor deste post) não é o sr. que esta(va) a desenvolver o software GeniouZ??? Precisava mesmo do contacto dele ou então que me manda-se um mailzito.
http://www.geniouz.com/
grato