Domanda

C'è un modo per scoprire quando in una LAN qualcuno collega un pendrive alla porta USB? Programmaticamente (preferibilmente in C #) o tramite alcuni strumenti. Fondamentalmente immagino che un'applicazione client si trovi su ciascun terminale e controlli le porte USB e invii le informazioni al server.

a.) Posso ottenere i dettagli del file che si sta copiando? b.) C'è un modo per farlo senza un'applicazione client?

Modifica

Non voglio disabilitare completamente la porta USB. deve essere sulla necessità di avere una base. Fondamentalmente vogliono solo che gli utenti della LAN condividano i dati in modo responsabile e sappiano che qualsiasi dato trasferito viene monitorato e registrato e può essere interrogato in seguito.

È stato utile?

Soluzione

[Supponendo Windows, data l'osservazione C #. Taggare di conseguenza]

Sì, questo è possibile. Ed è possibile ottenere i dettagli del file. Richiederà comunque la programmazione. Guarda WM_DEVICECHANGE e quindi re-enumerare le unità in seguito. Riceverai pendrive USB, ma anche schede SD. Mi aspetto che sia un bonus per te.

Per ottenere maggiori dettagli una volta che sai che è arrivata un'unità, usa System.IO.FileSystemWatcher

Aggiorna Ho trovato una soluzione migliore: se ti registri per le notifiche dell'interfaccia del volume, otterrai il percorso del volume per la nuova unità. Innanzitutto, crea un DEV_BROADCAST_DEVICEINTERFACE con dbcc_classguid = GUID_DEVINTERFACE_VOLUME . Quindi passalo a RegisterDeviceNotification () . Riceverai di nuovo un WM_DEVICECHANGE ma ora puoi lanciare lParam dal messaggio in DEV_BROADCAST_DEVICEINTERFACE * .

Puoi passare il nome_dbcc che ricevi a GetVolumeNameForVolumeMountPoint () . Puoi anche passare tutte le lettere di unità da GetLogicalDriveStrings () a GetVolumeNameForVolumeMountPoint () . Avrai un nome di volume corrispondente; questa è la nuova unità.

Altri suggerimenti

Controlla anche il registro in cui sono memorizzate tutte le informazioni sui dispositivi USB. HKEY_LOCAL_MACHINE \ SYSTEM \ Enum \ USB CurrentControlSet \

Puoi agganciare le modifiche di quella chiave nel registro e agire di conseguenza.

Questa utility gratuita è di grande aiuto quando cerchi: http: //www.nirsoft. net / utils / usb_devices_view.html

Puoi selezionare un'unità USB, scegliere di aprire la chiave di registro per quell'unità e abilitare / disabilitare il dispositivo e molto altro.

Nel registro è possibile vedere se il dispositivo è collegato, se è di tipo massstorage e altre informazioni di interesse. È facile filtrare i regkey per ottenere unità USB per il massstorage e quindi agganciarsi e attendere le modifiche (connessione / disconnessione).

Con Strumentazione gestione Windows è possibile registrarsi per ricevere eventi del Registro di sistema: http://msdn.microsoft.com/en-us /library/aa393035(VS.85).aspx

Scopri System.Management in .Net

Se si tratta di un piccolo ambiente e si desidera impedire l'utilizzo di qualsiasi dispositivo USB, è possibile disabilitare le porte USB in Gestione dispositivi, assicurarsi che nessun utente sia configurato come amministratore sui computer e che dovrebbe impedire l'utilizzo di tutti gli USB .

E se sei davvero paranoico, apri le macchine e disconnetti le porte.

Dai un'occhiata a questo articolo. Spiega i messaggi e come lavorare con loro. Rilevamento della rimozione dell'unità USB

Non l'ho mai usato, ma la gente di ic # code (sharpdevelop) ha un usblib. Forse può aiutarti.

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

Stai cercando di impedire l'uso di chiavette USB? In tal caso, esiste un criterio di gruppo che consente di limitare l'accesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top