2008-11-07 2 views
13

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

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

EDIT

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

ответ

13

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

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

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

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

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

+0

Бах, ошибка парсера URL. WM_DEVICECHANGE docs @ http://msdn.microsoft.com/en-us/library/aa363480(VS.85).aspx – MSalters 2008-11-07 14:05:07

0

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

+0

Не совсем. его необходимо иметь основу. В основном просто хотят, чтобы пользователи в локальной сети сообщали данные ответственно и знали, что любые данные передаются и контролируются и регистрируются и могут быть допрошены позже. – user20358 2008-11-07 12:35:53

1

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

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

3

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

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

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

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

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

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

Отъезд System.Management в .Net

Смежные вопросы