Pregunta

¿Hay alguna manera de averiguar cuándo alguien en una LAN conecta un pendrive al puerto USB? Programáticamente (en C # preferiblemente) o mediante alguna herramienta. Básicamente, me imagino que una aplicación cliente se sienta en cada terminal y monitorea los puertos USB y envía la información al servidor.

a.) ¿Puedo obtener los detalles de los archivos que se están copiando? b.) ¿Hay alguna manera de hacer esto sin una aplicación cliente?

EDITAR

No quiero deshabilitar el puerto USB por completo. es ser necesario tener una base. Básicamente, solo quiero que los usuarios en la LAN compartan datos de manera responsable y sepan que los datos que se transfieren se monitorean y registran y pueden ser cuestionados más tarde.

¿Fue útil?

Solución

[Suponiendo Windows, dada la observación de C #. Por favor etiquetar en consecuencia]

Sí, esto es posible. Y es posible obtener los detalles del archivo. Sin embargo, requerirá programación. Esté atento a WM_DEVICECHANGE y vuelva a enumerar las unidades después. Te dará pendrives USB, pero también tarjetas SD. Espero que sea un bono para ti.

Para obtener más detalles una vez que sepa que ha llegado una unidad, use System.IO.FileSystemWatcher

Actualizar Encontré una solución mejor: si se registra para recibir notificaciones de la interfaz de volumen, obtendrá la ruta de volumen para la nueva unidad. Primero, cree un DEV_BROADCAST_DEVICEINTERFACE con dbcc_classguid = GUID_DEVINTERFACE_VOLUME . Luego pase esto a RegisterDeviceNotification () . Volverás a obtener un WM_DEVICECHANGE pero ahora puedes enviar el lParam del mensaje a DEV_BROADCAST_DEVICEINTERFACE * .

Puede pasar el dbcc_name que recibe a GetVolumeNameForVolumeMountPoint () . También puede pasar todas las letras de unidad de GetLogicalDriveStrings () a GetVolumeNameForVolumeMountPoint () . Tendrá un nombre de volumen coincidente; esta es la nueva unidad.

Otros consejos

También revise el registro donde se almacena toda la información sobre los dispositivos usb. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB

Puede conectarse a los cambios de esa clave en el registro y actuar sobre eso.

Esta utilidad gratuita es de gran ayuda al buscar: http: //www.nirsoft. net / utils / usb_devices_view.html

Puede seleccionar una unidad usb, elegir abrir la clave de registro para esa unidad y habilitar / deshabilitar el dispositivo y mucho más.

En el registro puede ver si el dispositivo está conectado, si es de tipo de almacenamiento y otra información interesante. Es fácil filtrar las teclas para obtener unidades de almacenamiento usb-masss y luego conectarlas y esperar los cambios (conectar / desconectar).

Con Windows Management Instrumentation puede registrarse para recibir eventos del Registro: http://msdn.microsoft.com/en-us /library/aa393035(VS.85).aspx

Echa un vistazo a System.Management en .Net

Si es un entorno pequeño y desea evitar que se usen dispositivos usb, puede deshabilitar los puertos usb en el administrador de dispositivos, asegúrese de que no haya usuarios configurados como administradores en las máquinas y eso debería evitar todo uso usb .

Y si eres realmente paranoico al respecto, solo abre las máquinas y desconecta los puertos.

Echa un vistazo a este artículo. Explica los mensajes y cómo trabajar con ellos. Detección de la extracción de la unidad usb

Nunca lo he usado, pero la gente de ic # code (sharpdevelop) tiene un usblib. Tal vez te pueda ayudar.

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

¿Está tratando de evitar el uso de unidades de memoria USB? Si es así, existe una Política de grupo que le permite restringir el acceso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top