Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Nic24
0 / 0 / 0
Регистрация: 09.12.2017
Сообщений: 27
1

Сценария асинхронного отслеживания подключения устройств USB

23.12.2017, 21:59. Просмотров 966. Ответов 14
Метки нет (Все метки)

Здравствуйте. Помогите решить задачу она заключается в следующем надо отследить usb flash и usb flash маскирующуюся под cd-rom после чего создать 1.txt с номером ip (ну или посложнее отправить сообщение на 192.168.0.1 в виде msg box с номером ip если это возможно решить средствами vbs) определить usb могу, а вот все остальное нет. Для определения usb и исполбзую следующее.
Visual Basic
1
2
3
4
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set objEvents = objWMIService.ExecNotificationQuery ("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.DriveType = 2")
Set objEvents = objWMIService.ExecQuery("Select * from Win32_CDROMDrive")
Wscript.Echo "USB флешка вкл."
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2017, 21:59
Ответы с готовыми решениями:

Выборочное отключение USB устройств
Здравствуйте! Возможно ли средствами Win XP Pro отключить доступ...

Вывести список установленных драйверов или устройств, а также неустановленных устройств
Здравствуйте! Подскажите как можно вывести список установленных драйверов или...

Переодически перестают работать USB порты на материнке после подключения устройств к USB корпуса
Собственно проблема почти описана в заголовке. Довольно странная фигня. К...

Отслеживание подключения USB устройств
Требуется написать консольное приложение (в дальнейшем службу) отслеживать...

Устройство для отслеживания зависаний и перезагрузки IP устройств. Куда продавать?
Доброго времени суток! Ситуация такая: в свободное (и не очень) время я...

14
FlasherX
740 / 297 / 114
Регистрация: 06.06.2017
Сообщений: 1,106
26.12.2017, 00:22 2
IP как тащить я показывал.
txt создаётся так:
Visual Basic
1
CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\Path\to\1.txt").Write Mid(MyIP, 2)
В приведённом коде зачем-то дважды создана одноимённая коллекция, и безусловно вызывается окно в неким текстом. А где сама проверка?
Visual Basic
1
2
3
4
With GetObject("winmgmts:\\.\root\cimv2")
If .ExecQuery("SELECT Caption FROM Win32_DiskDrive WHERE InterfaceType = 'USB' AND Partitions=1").Count+_
.ExecQuery("Select Name from Win32_CDROMDrive WHERE Name LIKE '% USB%' Or DeviceID LIKE 'USB%'").Count Then MsgBox "USB-флешка/привод вкл."
End With
1
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
26.12.2017, 10:19 3
Nic24, имеются вопросы:
1) нужно отследить момент подключения USB-накопителя только один раз?
2) что делать, если к моменту запуска сценария USB-накопител(ь/и) уже подключен(ы)?
3) должен ли сценарий пытаться как-либо идентифицировать ситуацию, когда подключен USB-привод (скажем, для CD-дисков)?
4) за текущим или удалённым компьютером должен наблюдать сценарий?
5) как именно предполагается запускать сценарий?
6) в приведённом вами фрагменте сценария используется синхронный тип подписки на событие подключения USB-накопителя, почему в названии темы вы упомянули асинхронный тип подписки?

А так, вот простой пример создания синхронной подписки на событие подключения USB-накопителя либо типа Removable Disk (2), либо типа Compact Disc (5) со счётчиком кол-ва подключений (для демонстрации возможного варианта выхода из цикла ожидания события) на текущем компьютере:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objCollection = objWMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_LogicalDisk' AND (TargetInstance.DriveType=2 OR TargetInstance.DriveType=5)")
'WScript.Echo "Наблюдение начато: " & Time
Do
    Set objItem = objCollection.NextEvent
    intCount = intCount + 1
    WScript.Echo intCount & vbNewLine & objItem.TargetInstance.DeviceID & vbNewLine & objItem.TargetInstance.FileSystem
    If intCount >= 2 Then Exit Do
Loop
'WScript.Echo "Наблюдение закончено: " & Time
WScript.Quit 0
0
FlasherX
740 / 297 / 114
Регистрация: 06.06.2017
Сообщений: 1,106
26.12.2017, 12:01 4
Dmitrii
3) Скорее да, коли написано про "маскировку". Т. е. этого недостаточно:
Visual Basic
1
OR TargetInstance.DriveType=5
0
Nic24
0 / 0 / 0
Регистрация: 09.12.2017
Сообщений: 27
26.12.2017, 13:50  [ТС] 5
1 нет не одноуратно
2 славо богу их нет и могут появится только после загрузки
3 беспокоят только usb flash и usb flash москирующиеся под cd
4 для упрощения за текущим ведь далее надо отправить сообщение об подключении
5 через авто загрузку
6 маленкий ребенок и авто набор творят чудеса, а как исправить заголовок не нашел
0
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
26.12.2017, 14:35 6
Цитата Сообщение от Nic24 Посмотреть сообщение
... могут появится только после загрузки...
После загрузки ОС, но до старта сценария (вопрос был о такой ситуации).
Цитата Сообщение от Nic24 Посмотреть сообщение
... usb flash москирующиеся под cd...
Как именно в известных вам случаях это проявляется? Что является причиной "маскировки": действия пользователя или особенности накопителя и/или драйвера для него?
0
Nic24
0 / 0 / 0
Регистрация: 09.12.2017
Сообщений: 27
26.12.2017, 14:52  [ТС] 7
1 нет не однократно

Добавлено через 10 минут
компьюткр включают за 15 минут до не посредственного использования, так что думаю скрипт из автозапуска будет запущен.
0
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
26.12.2017, 18:40 8
Nic24, без ответа остались вопросы:
Цитата Сообщение от Dmitrii Посмотреть сообщение
Как именно в известных вам случаях это проявляется? Что является причиной "маскировки": действия пользователя или особенности накопителя и/или драйвера для него?
Цитата Сообщение от Nic24 Посмотреть сообщение
... думаю скрипт из автозапуска будет запущен.
Это вовсе не гарантировано. Впрочем, дело хозяйское.
0
Nic24
0 / 0 / 0
Регистрация: 09.12.2017
Сообщений: 27
26.12.2017, 19:01  [ТС] 9
Назовем это особенностью, в основной массе это наблюдается на телефонах, но и на flash так же существует. Смотрите рис. тут как раз телефон ну под руками другого нет. А вообще возможно ли средствами VBS или CMD зафиксировать абсолютно любое подключение по usb начиная от флэшки и заканчивая вентилятором?
0
Миниатюры
Сценария асинхронного отслеживания подключения устройств USB  
Nic24
0 / 0 / 0
Регистрация: 09.12.2017
Сообщений: 27
26.12.2017, 19:06  [ТС] 10
"Это вовсе не гарантировано. Впрочем, дело хозяйское."
А если не сложно просвистите про другие методы не откажусь даже от ссылок.
0
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
27.12.2017, 05:41 11
Цитата Сообщение от Nic24 Посмотреть сообщение
... просвистите про другие методы...
Я неудачно выполнил цитирование, т.к. имелось ввиду предположение о том, что накопитель не будет подключен до момента включения компьютера.

Если же вести речь о способах запуска сценария, то в случае доменной сети можно использовать объекты групповой политики, в случае одноранговой сети - объекты локальной политики (если версии ОС не домашней редакции). Наконец, сценарий можно запускать с удалённого компьютера либо для наблюдения с помощью подписки на событие, либо для периодической ревизии подключенных на текущий момент накопителей. В последнем случае уместно воспользоваться планировщиком.
Цитата Сообщение от Nic24 Посмотреть сообщение
Назовем это особенностью...
Поскольку речь не идёт о целенаправленных действиях пользователя по сокрытию факта подключения накопителя, то имеет смысл регистрировать подключение любых устройств типов Removable Disk и Compact Disc. Вставка компакт-диска в уже подключенный привод к возникновению обсуждаемого события не приведёт.
Цитата Сообщение от Nic24 Посмотреть сообщение
... возможно ли средствами VBS или CMD зафиксировать абсолютно любое подключение по usb...
Ни VBS, ни язык пакетных файлов собственными средствами для этого не обладают. Здесь можно пользоваться либо WMI, либо WinAPI (в VB-сценариях только через специальную "обёртку", разумеется), либо какими-нибудь утилитами.
За абсолютность не поручусь, но, теоретически, возможно, т.к. ОС все такие события регистрирует.
0
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
28.12.2017, 13:53 12
Лучший ответ Сообщение было отмечено Nic24 как решение

Решение

Для идентификации накопителей, "маскирующихся" под привод компакт-дисков можно попробовать использовать свойство MediaType экземпляра WMI-класса Win32_CDROMDrive. Предполагается, что в рассматриваемом случае оно будет иметь значение UNKNOWN.
Более надёжного способа пока предложить не могу.
Пример для проверки:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim objWMI, objCollection, objItem, blnPlug
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objCollection = objWMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_LogicalDisk' AND (TargetInstance.DriveType=2 OR TargetInstance.DriveType=5)")
'WScript.Echo "Наблюдение начато: " & Time
Do
    Set objItem = objCollection.NextEvent
    If objItem.TargetInstance.DriveType = 2 Then
        blnPlug = True
    ElseIf objItem.TargetInstance.DriveType = 5 Then
        If objWMI.ExecQuery("SELECT MediaType FROM Win32_CDROMDrive WHERE Drive='" & objItem.TargetInstance.DeviceID & "' AND MediaType='UNKNOWN'").Count > 0 Then blnPlug = True
    End If
    If blnPlug Then
        'intCounter = intCounter + 1
        WScript.Echo "Тип накопителя: " & objItem.TargetInstance.DeviceID & vbNewLine & "ФС накопителя: " & objItem.TargetInstance.FileSystem
        'If intCounter >= 2 Then Exit Do
    End If
    blnPlug = False
Loop
'WScript.Echo "Наблюдение закончено: " & Time
WScript.Quit 0
0
FlasherX
740 / 297 / 114
Регистрация: 06.06.2017
Сообщений: 1,106
28.12.2017, 15:06 13
Dmitrii, а с чего вы взяли, что речь про маскировку, если на вопрос
Цитата Сообщение от Dmitrii Посмотреть сообщение
Что является причиной "маскировки": действия пользователя или особенности накопителя и/или драйвера для него?
было отвечего:
Цитата Сообщение от Nic24 Посмотреть сообщение
Назовем это особенностью
Значит, речь об интерфейсе. Я привёл вполне себе годный способ определения.
0
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
28.12.2017, 16:46 14
Цитата Сообщение от FlasherX Посмотреть сообщение
... с чего вы взяли, что речь про маскировку...
Слово маскировка у меня везде используется в кавычках, следовательно, употребляется не в прямом смысле.
То, о чём моя речь,- тоже особенность: USB-накопитель, монтирующийся как два устройства (собственно USB-накопитель и фиктивный накопитель на компакт-дисках, что полностью соответствует примеру, приведённому автором темы).

Цитата Сообщение от FlasherX Посмотреть сообщение
... речь об интерфейсе...
Реальный USB-привод компакт-дисков и упомянутый выше фиктивный накопитель будут иметь одинаковый интерфейс: USB.

Цитата Сообщение от FlasherX Посмотреть сообщение
... Я привёл вполне себе годный способ определения.
Не вижу причины, по которой ваше предложение должно ограничивать меня в предложении своего варианта?
Полагаю, что автор темы дееспособен, а следовательно, вполне в состоянии выбрать подходящий для его условий способ.
0
FlasherX
740 / 297 / 114
Регистрация: 06.06.2017
Сообщений: 1,106
28.12.2017, 17:44 15
Цитата Сообщение от Dmitrii Посмотреть сообщение
фиктивный накопитель на компакт-дисках
В моём браузере не отображаются приложенные картинки, я сперва действительно не понял, о чём речь. Сейчас с другого браузера зашёл, стало понятно. Речь о виртуальных дисках. У них медиатип всегда будет UNKNOWN. Теперь вопрос снимается. Конкретно для таких мой вариант не годится.
0
28.12.2017, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2017, 17:44

USB 2.0 и USB 3.0 - питание устройств
Извиняюсь, если не тот раздел форума. Выбрал этот, так как есть что-то общее с...

"Устройство USB не опознано. Одно из подключенных к этому компьютеру USB-устройств работает неправильно и Windows не удается опознать его..."
У меня такая проблема: глючит USB. Обьясняю суть - на компьютере два разъема...

Очередность подключения устройств к wifi
Имеется следующая загадочная для меня ситуация: есть роутерт upvel ur315-bn,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru