Pergunta

Existe uma maneira de descobrir quando em uma LAN plugs qualquer pessoa em um pendrive na porta USB? Programatically (em C # de preferência) ou através de alguma ferramenta. Basicamente eu imagino um aplicativo cliente se sente em cada terminal e monitora as portas USB e envia as informações para o servidor.

a.) Posso obter os detalhes do arquivo (s) a ser copiado? b.) Existe uma maneira de fazer isso sem um aplicativo cliente?

Editar

Eu não quero desativar totalmente a porta USB. seu ser em uma necessidade de ter base. Basicamente só quer que os usuários na LAN para compartilhar dados com responsabilidade e sabemos que tudo dados é tranfered é monitorado e registrado e pode ser questionada mais tarde.

Foi útil?

Solução

[Assumindo o Windows, dada a C # observação. Por favor, tag conformidade]

Sim, isso é possível. E é possível obter os detalhes do arquivo. Isso irá requerer programação, no entanto. Relógio para WM_DEVICECHANGE e unidades reenumere depois. Ele vai te pendrives USB, mas também cartões SD. Espero que isso é um bônus para você.

Para obter mais detalhes quando você sabe uma unidade chegou, uso System.IO.FileSystemWatcher

Atualizar Eu encontrei uma solução melhor - se você registrar para notificações de interface de volume, você vai obter o caminho do volume para a nova unidade. Primeiro, crie um DEV_BROADCAST_DEVICEINTERFACE com dbcc_classguid=GUID_DEVINTERFACE_VOLUME. Em seguida, passar isso para RegisterDeviceNotification(). Você vai voltar a ter uma WM_DEVICECHANGE mas agora você pode converter o lParam da mensagem para DEV_BROADCAST_DEVICEINTERFACE*.

Você pode passar o dbcc_name você recebe a GetVolumeNameForVolumeMountPoint(). Você também pode passar todas as letras de unidade de GetLogicalDriveStrings() para GetVolumeNameForVolumeMountPoint(). Você vai ter o nome do volume de um correspondente; esta é a nova unidade.

Outras dicas

Além disso, verifique o registro onde todas as informações são armazenadas sobre os dispositivos USB. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB

Você pode ligar para mudanças de que a chave no registro e agir de acordo com isso.

Este utilitário gratuito são uma grande ajuda quando pooking redor: http: //www.nirsoft. net / utils / usb_devices_view.html

Você pode selecionar um usb-drive, escolha para abrir a chave do Registro para essa unidade e ativar / desativar o dispositivo e muito mais.

No registro você pode ver se o dispositivo está conectado, se é do tipo MassStorage e outras informações interresting. É fácil para filtrar os REGKEYS apenas para obter drives USB-MassStorage e, em seguida, ligar para e esperar por alterações (/ desconexão de conexão).

Com o Windows Management Instrumentation você pode se cadastrar para receber eventos do Registro: http://msdn.microsoft.com/en-us /library/aa393035(VS.85).aspx

Confira System.Management em .Net

Se seu um ambiente pequeno e você quer evitar quaisquer dispositivos USB de ser usado, em seguida, você pode desativar as portas USB no gerenciador de dispositivos, certifique-se nenhum usuário estiver configurado como adminstrators nas máquinas e que deve evitar todo o uso usb .

E se você é realmente paranóico sobre isso, basta abrir as máquinas e conecte as portas.

Tenha um olhar para este artigo. Explica as mensagens e como trabalhar com eles. remoção Detectando drive USB

Eu nunca usei, mas o pessoal do código # ic (SharpDevelop) têm um usblib. Talvez ele possa ajudá-lo.

http://www.icsharpcode.net/OpenSource/SharpUSBLib/default.aspx

Você está tentando impedir o uso de pen drives USB? Se assim for, há uma política de grupo que permite que você restrinja o acesso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top