Question

Existe-t-il un moyen de savoir quand, dans un réseau local, quelqu'un connecte une clé USB au port USB? Par programme (en C # de préférence) ou par un outil. En gros, j'imagine qu'une application cliente repose sur chaque terminal et surveille les ports USB et envoie les informations au serveur.

a.) Puis-je obtenir les détails du ou des fichiers copiés? b.) Y a-t-il un moyen de faire cela sans une application client?

EDIT

Je ne veux pas désactiver complètement le port USB. son être sur un besoin d'avoir la base. En gros, nous souhaitons simplement que les utilisateurs du réseau local partagent les données de manière responsable et sachent que toutes les données transférées sont surveillées et journalisées et peuvent être interrogées ultérieurement.

Était-ce utile?

La solution

[En supposant que Windows, étant donné la remarque C #. Merci de marquer en conséquence]

Oui, c'est possible. Et il est possible d'obtenir les détails du fichier. Il faudra cependant programmer. Surveillez WM_DEVICECHANGE et ré-enumérez les lecteurs après. Vous obtiendrez des clés USB, mais aussi des cartes SD. Je pense que c'est un bonus pour vous.

Pour obtenir plus de détails une fois que vous savez qu'un lecteur est arrivé, utilisez System.IO.FileSystemWatcher

Mettre à jour J'ai trouvé une meilleure solution. Si vous vous inscrivez pour recevoir des notifications d'interface de volume, vous obtiendrez le chemin du volume du nouveau disque. Commencez par créer un DEV_BROADCAST_DEVICEINTERFACE avec dbcc_classguid = GUID_DEVINTERFACE_VOLUME . Ensuite, transmettez-le à RegisterDeviceNotification () . Vous obtiendrez à nouveau un WM_DEVICECHANGE, mais vous pouvez maintenant convertir le lParam du message en DEV_BROADCAST_DEVICEINTERFACE * .

Vous pouvez transmettre le nom_bdc que vous recevez à GetVolumeNameForVolumeMountPoint () . Vous pouvez également transmettre toutes les lettres de lecteur de GetLogicalDriveStrings () à GetVolumeNameForVolumeMountPoint () . Vous aurez un nom de volume correspondant; c'est le nouveau lecteur.

Autres conseils

Consultez également le registre où sont stockées toutes les informations sur les périphériques USB. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB

Vous pouvez vous connecter aux modifications de cette clé dans le registre et agir en conséquence.

Cet utilitaire gratuit est une aide précieuse lors de vos recherches: http: //www.nirsoft. net / utils / usb_devices_view.html

Vous pouvez sélectionner un lecteur USB, choisir d'ouvrir la clé de registre pour ce lecteur et activer / désactiver le périphérique, et bien plus encore.

Dans le registre, vous pouvez voir si le périphérique est connecté, s'il est de type stockage de masse et d'autres informations intéressantes. Il est facile de filtrer les registres pour obtenir simplement des lecteurs USB, puis se connecter et attendre les modifications (connecter / déconnecter).

Avec Windows Management Instrumentation, vous pouvez vous inscrire pour recevoir des événements de registre: http://msdn.microsoft.com/en-us /library/aa393035(VS.85).aspx

Découvrez System.Management in .Net

S'il s'agit d'un petit environnement et que vous souhaitez empêcher l'utilisation de périphériques USB, vous pouvez désactiver les ports USB dans le Gestionnaire de périphériques. Assurez-vous qu'aucun utilisateur n'est configuré en tant qu'administrateur sur les ordinateurs. Cela devrait empêcher toute utilisation USB. .

Et si vous êtes vraiment paranoïaque à ce sujet, ouvrez simplement les machines et débranchez les ports.

Consultez cet article. Explique les messages et comment travailler avec eux. Détection de la suppression du lecteur USB

Je ne l'ai jamais utilisé, mais les utilisateurs de ic # code (sharpdevelop) ont un usblib. Peut-être que cela peut vous aider.

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

Essayez-vous d’empêcher l’utilisation de clés USB? Si tel est le cas, une stratégie de groupe vous permet de restreindre l'accès.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top