Как обнаружить с помощью С#, если pendrive подключен к USB-порту?

Есть ли способ узнать, когда в локальной сети кто-нибудь подключается к порту USB? Программно (предпочтительно в С#) или через какой-либо инструмент. В принципе, я бы предположил, что клиентское приложение сидит на каждом терминале и контролирует порты USB и отправляет информацию на сервер.

a.) Могу ли я получить информацию о копировании файла (ов)? б) Есть ли способ сделать это без клиентского приложения?

ИЗМЕНИТЬ

Я не хочу полностью отключать порт USB. его необходимо иметь основу. В основном просто хотят, чтобы пользователи в локальной сети сообщали данные ответственно и знали, что любые передаваемые данные отслеживаются и регистрируются и могут быть допрошены позже.

Ответы

Ответ 1

[Предполагая Windows, учитывая замечание С#. Пожалуйста, отметьте соответствующим образом]

Да, это возможно. И можно получить информацию о файле. Это потребует программирования. Следите за WM_DEVICECHANGE и снова перечислите диски. Он доставит вам USB-накопители, а также SD-карты. Я ожидаю, что бонус для вас.

Чтобы узнать больше, как только вы узнаете, что диск пришел, используйте System.IO.FileSystemWatcher

Обновление Я нашел лучшее решение - если вы зарегистрируетесь для уведомлений об объеме интерфейса, вы получите путь тома для нового диска. Сначала создайте DEV_BROADCAST_DEVICEINTERFACE с помощью dbcc_classguid=GUID_DEVINTERFACE_VOLUME. Затем передайте это на RegisterDeviceNotification(). Вы снова получите WM_DEVICECHANGE, но теперь вы можете передать lParam из сообщения в DEV_BROADCAST_DEVICEINTERFACE*.

Вы можете передать dbcc_name, который вы получили, на GetVolumeNameForVolumeMountPoint(). Вы также можете передать все буквы дисков от GetLogicalDriveStrings() до GetVolumeNameForVolumeMountPoint(). У вас будет одно совпадающее имя тома; это новый диск.

Ответ 2

Также проверьте реестр, где хранится вся информация о USB-устройствах. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

Вы можете подключиться к изменениям этого ключа в реестре и действовать по этому поводу.

Эта бесплатная утилита является большой помощью при запуске: http://www.nirsoft.net/utils/usb_devices_view.html

Вы можете выбрать USB-накопитель, выбрать, чтобы открыть раздел реестра для этого диска и включить/отключить устройство и многое другое.

В реестре вы можете увидеть, подключено ли устройство, если оно имеет тип massstorage и другую интересную информацию. Его легко фильтровать regkeys, чтобы просто получить usb-massstorage диски, а затем подключиться и ждать изменений (connect/disconnect).

С помощью инструментария управления Windows вы можете зарегистрироваться, чтобы получать события реестра: http://msdn.microsoft.com/en-us/library/aa393035(VS.85).aspx

Проверьте System.Management в .Net

Ответ 3

Если это небольшая среда и вы хотите запретить использование каких-либо устройств USB, вы можете отключить порты USB в диспетчере устройств, убедитесь, что ни один пользователь не настроен как администраторы на машинах, и это должно предотвратить использование usb.

И если вы действительно параноики об этом, просто откройте машины и подключите порты.

Ответ 6

Вы пытаетесь предотвратить использование флэш-накопителей USB? Если это так, существует групповая политика, которая позволяет вам ограничить доступ.