Скрипт для отключения usb
Доброго дня всем.
Сделал программку по желанию одного человека с возможностью извлекать любое устройство USB и при этом чтобы видеть максимальное количество информации о нем. Все отключаться должно сразу без лишних вопросов и возможностей опять подключить - отключил, значит отключил (надо опять, значит вытащил потом воткнул). Утилита USBDeview сама по себе ему не понравилась (да и мне "сама" тоже), с одной стороны перебор информации, с другой она работает из командной строки, но не совсем так как он хочет. Вот я и совместил нужное с полезным, но есть ряд вопросов. Вариант что я сделал показывает устройства USB начиная с порта USB, первый вопрос бывает ли их более 9ти штатных (разные хабы не в счет), показывая только основное устройство подключенное в этот порт, а вариант Izvlech_USB_full - все устройства в этом порте, но при нажатии на отключение на любое из этого порта отключатся все из этого порта, и его и меня это устраивает, информативности больше, но не очень нужной и строк больше - рябит в глазах, лучше вариант по умолчанию. Но остается вопрос, показать все подключенные в один порт устройства я могу и могу вывести ID и букву диска каждого, а вот отключить это устройство можно ли отдельно? У меня нет хаба чтобы проверить на двух, например, флешках включенных в один порт. Проверял на мобильном телефоне, подключенного в один естественно порт, у которого два диска, один основной второй второстепенный. Второй отдельно отключить не смог ничем и никак только с основным, может так и должно быть, тогда хорошо и понятно, но у кого есть хаб попробуйте, как он вообще показывает устройства свои. Они будут независимые или будет один основной ID по отношению к конкретному порту. Еще вопрос. Клавиатура USB, думаю определится в разряде устройств ввода, а сканер или МФУ в устройствах вывода, ну нет у меня ничего кроме принтера чтобы проверить, потестируйте у кого есть. Будет ли работать на XP? Не помню есть там wmic? Везде ли пустит в реестр.
Работает отдельно или из конт.меню по ПКМ на р.столе или открытой папке. Использовал в утилите именно "STOP", по можно и "disable", но тогда нужно думать как для удобства прикрутить enable. В утилите еще есть возможность отключать по порту, если с отдельно определяемыми устройствами не должно работать то код можно совсем слегка упростить отключая по номеру порта.
Скажете зачем это надо, типа я свою флеху выдергиваю фаркопом своего Ланоса и ничё, работает! Ну-ну. Даже несколько устройств, одновременно включенных в порты USB, а тем более черех хабы в один порт могут убить мать, это как много нагрузок включенных в одну розетку через тройник, с учетом того что и эти и те нагрузки не нормированы не документированы не проверены, все на авось, флешка 200mA (а если больше?), порт USB современного компьютера выдерживает 500mA (а если нет и что значит современный, а до этого было 200, значит две флешки уже могут сжечь порт, а он на мамке). Ну это я отвлекся. Задача была больше в том, что значки в трее и сам трей windows живут своей жизнью и надо было всегда точно и четко видеть что подключено, куда и иметь уверенность что это можно выключить и к тому же иметь немного отличий между устройствами, по диску, модели, метке и уже на крайний случай (если уж оба устройства полностью одинаковы) по номеру порта, правда нужно знать где какой, хотя методом тыка можно запомнить и (или) записать.
Вот основной Bat, второй вариант и он же и все, что нужно для его работы в архиве. Варианты почти не отличаются. Состоят из четырех частей, первые три можно использовать как все вместе так и отдельно с четвертой любую одну или две:
Включение/отключение USB-устройства
есть у меня USB-устройство, которое имеет свойство подвисать периодически: приходится заходить в.
Запуск программы при подключении USB устройства
Доброго времени суток! Подскажите вариант: Нужен bat файл который будет проводить проверку.
Выборочное отключение USB устройств
Здравствуйте! Возможно ли средствами Win XP Pro отключить доступ флеш-носителям, оставив доступ.
При подключении к USB входу любого устройства индикатор питания горит, но устройство не отображается и не работает
Всем доброго времени суток! Проблема: При подключении к USB входу любого устройства индикатор.
Изменил первую часть кода, ту что определяет флешки, мобильные телефоны, не все мобильные определялись:
Как писал выше, другие части по желанию, можно ставить, можно нет, ну последнюю только обязательно - вывод.
B XP кто-то испытал? Сделал по описанию, WMIC есть, реестр изменён! B контекстном меню добавится пункт? При вызове меню на рабочем столе и в менеджере файлов в любом случае? "Работает отдельно" значит "при явном запуске скрипта"? Похоже, в XP не работает.
Как программно можно отключить / блокировать USB порт (чтобы девайс в это время был неактивен) ?
Сначала думал отключать конкретное устройство, перепробовал несколько вариантов c enSO и переведённые на ruSO , но все упиралось в то, что некоторые устройства отключить было невозможно.
Подумал что можно тогда просто отключать USB порты.
На enSO нашёл про отключение всех портов сразу и что этот способ будет работать только после перезагрузки.
А можно ли отключать питание / блокировать конкретный USB порт без перезагрузок ? Или же отключать не отключаемые устройства ?
Из скрина, конечно, ясно, о какой OS идёт речь, но все же стоило добавить об этом информацию явно в вопрос/тэги)
2 ответа 2
Нашел в интернете класс:
Если ты на руках имеешь GUID и instancePath (то есть путь в менеджере устройств) то девайс можно отключить следующим образом:
конкретно этим кодом и конкретно этими значениями я себе отключил мышку для теста :)
Но этим способом так же под вопросом выйдет ли отключить конкретный девайс. Не все девайсы это поддерживают.
Так же, судя по тексту, нужно твою прогу компилить именно в х64 (в той платформе -- в которой у тебя операционка).
С поиском GUID девайса все довольно просто: девайс менеджер -> ищешь нужный девайс -> пропертиз -> Ивентс -> в блоке инфрпмации будет "Class Guid".
с поиском программного пути конкретного девайса разберешся сам. Вопрос стоял об отключении девайса :)
А можно ли отключать питание
Внезапно (для меня лично), но это возможно.
Как видно по второму ответу прога DevManView.exe умеет отключать в рантайме. Значит это ВОЗМОЖНО (лично я думал что это блокировано на хардварном уровне) . Но как сделать это напрямую из шарпа я не подскажу. :) Только если использовать консольные возможности этой проги -- снова таки, по линке описано как.
блокировать конкретный USB порт без перезагрузок?
Не понимаю что такое "блокировать". Если ты про просто дисейбл устройства как через девайс менеджер - то реализация выше. Без перезагрузок.
Если ты про "блокировать ручное включение девайса" -- ты можешь просто устроить слежку за тем, не включили ли этот девайс без твоего разрешения в отдельном потоке и автоматом отключать. Криво, но будет работать как тебе нужно.
Или же отключать не отключаемые устройства?
Наверное они на то и отключаемые, что бы их не отключали. Вряд ли.
Только если питание рубонуть.
UPD: как обозначил MSDN.WhiteKnight в коментариях, то вполне возможно что неотключаемые устройства являются "составными". То есть если ты отключишь несколько дочерних, то и это неотключаемое будет отключено.
Помогите с батником который будет отключать устройство если оно включено и включать если оно выключено.
Знаю, что нужно использовать devcon, findstr, if и goto да с if не дружу.
Вот состояния устройства
C:\>devcon_x64.exe disable "HID\VID_045E&PID_00F9&REV_0002&MI_01&Col02"
HID\VID_045E&PID_00F9&MI_01&COL02\7&18BF0AD&0&0001 : Disabled
1 device(s) disabled.
C:\>devcon_x64.exe status "HID\VID_045E&PID_00F9&REV_0002&MI_01&Col02"
HID\VID_045E&PID_00F9&MI_01&COL02\7&18BF0AD&0&0001
Name: HID- Device is disabled.
1 matching device(s) found.
C:\>devcon_x64.exe enable "HID\VID_045E&PID_00F9&REV_0002&MI_01&Col02"
HID\VID_045E&PID_00F9&MI_01&COL02\7&18BF0AD&0&0001 : Enabled
1 device(s) are enabled.
C:\>devcon_x64.exe status "HID\VID_045E&PID_00F9&REV_0002&MI_01&Col02"
HID\VID_045E&PID_00F9&MI_01&COL02\7&18BF0AD&0&0001
Name: HID- Driver is running.
1 matching device(s) found.
-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Этого я не понял. Что значит "закинуть" и зачем ? Судя по твоим командам, он запускался просто из корня диска C: и работал, или я что-то не так понял ?
-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)
Этого я не понял. Что значит "закинуть" и зачем ? Судя по твоим командам, он запускался просто из корня диска C: и работал, или я что-то не так понял ? » |
Запускался с корня он только после смены рабочего каталога на корень C:. Твой батник, без смены каталога, работал бы только при запуске с корня C:. А теперь он работает с любого места.
Я редко юзаю девкон, но уже больше года хотел её переместить какой-нибудь PATH.
Моя задача немного сложнее. При загрузке системы, устройство чаще всего не запускается.
Вот, что выдаёт:
C:\Windows\system32>devcon64 status "@USB\VID_0079*PID_0007\5&326C0CBC&0&10"
USB\VID_0079&PID_0007\5&326C0CBC&0&10
Name: USB- Device has a problem: 10.
1 matching device(s) found.
Если сделать рестарт устройства 1-3 раза, через команду devcon64 restatrt, оно запускается и работает нормально.Пишет:
Driver is running.
ЗАДАЧА: Как сделать, чтобы при запуске батника:
1.Проверка статуса устройства, если оно запущено нормально (Driver is running.), то ничего не делать.
2. Если не запустилось (Device has a problem: 10.), то devcon64 restatrt. Причём команда повторялась бы до тех пор, пока устройство не запуститься, то есть в статусе будет - Driver is running. Знаю, что нужно использовать if,findstr, for, но как это реализовать - не знаю. Обновление драйверов не предлагать. Устройство устаревшее, и чего я только не перепробовал, и не только я - всё бесполезно.
Буду очень признателен за любую помощь. Заранее благодарю за ответ.
Конфигурация компьютера | |
Процессор: Intel(R) Core(TM) i3 CPU M 370 2.40GHz, ядер: 2, логических процессоров: 4 | |
Память: 8,00 ГБ | |
ОС: Windows 10 Pro x64 |
но вряд-ли, перезапускать надо что-то по-глобальнее чтобы проблемный драйвер запустился и скорее после метки :st, нужна строка запуска чего-то еще.
На руках имеется звуковуха Creative E-Mu 0404 USB.
Она отлично решает задачи звукозаписи, но в повседневной работе звук периодически останавливается.
Приходится отключать/включать устройство. После этого она начинает работать.
Проблема больше всего проявляется во время просмотра видео на Youtube и через mpc.
Сейчас приходится делать следующее:
Открывать C:\Windows\System32\mmsys.cpl
ПКМ по устройству - Отключить
ПКМ по устройству - Включить
(либо включить выключить железным путём)
Необходимо встроенными или сторонними инструментами в Win10 выполнить отключение/включение звукового устройства через cmd.
P.S. пробовал devcon disable/enable, не заработало. Возможно недоразобрался с командами
P.S.S понимаю, что проблема может быть с дровами или прошивкой устройства, так как проблема не наблюдается на Ubuntu 16.04 на том же железе.
Прошивку обновить не могу, а дрова сейчас единственные, которые работают с минимумом проблем.
Конфигурация компьютера | |
Ноутбук/нетбук: Lenovo ThinkPad W530 24385AU (i7-3740QM 2.7GHz, 24GB RAM, Samsung 840 Pro 256GB + HDD 750GB) | |
ОС: Windows 10 Pro x64 Release Preview | |
Прочее: На пенсии: HP Pavilion dv7t (17.3'', i7-2630QM, HD 6770M 1Gb, 8Gb RAM) |
пробовал devcon disable/enable, не заработало. Возможно недоразобрался с командами » |
-------
Канал Windows 11, etc | Чат @winsiders
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
devcon предлагает перезагрузить компьютер или устройство при выключении или рестарте
C:\devcon>devcon disable @USB\VID_041E*
USB\VID_041E&PID_3F04\E-MU-BB-3F04-07DC0815-09AFB-EM8761T2A : Disabled on reboot
USB\VID_041E&PID_3F04&MI_00\6&DA1AF34&0&0000 : Disabled on reboot
The 2 device(s) are ready to be disabled. To disable the devices, restart the
devices or reboot the system .
C:\devcon>devcon enable @USB\VID_041E*
USB\VID_041E&PID_3F04\E-MU-BB-3F04-07DC0815-09AFB-EM8761T2A : Enabled on reboot
USB\VID_041E&PID_3F04&MI_00\6&DA1AF34&0&0000 : Enabled on reboot
The 2 device(s) are ready to be enabled. To enable the devices, restart the devices or
reboot the system .
C:\devcon>devcon restart @USB\VID_041E*
USB\VID_041E&PID_3F04\E-MU-BB-3F04-07DC0815-09AFB-EM8761T2A : Requires reboot
USB\VID_041E&PID_3F04&MI_00\6&DA1AF34&0&0000 : Requires reboot
The 2 device(s) are ready to be restarted. To restart the devices, reboot the system.
Требуется руками тянуться к устройству, после этого enable работает.
Однако, мне скорее требуется отключить и включить вывод устройства, а не саму звуковуху.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Стсатистика проста, пробовал тамошний скрипт, в нем если запущены проги с флешки, то при ее остановке, процесс неуспешен.
А смысл задачи в том, чтобы насмотря ни на что отключить флешку, подкосив все исходящие с нее программы. Отключение USB не вариант, так как программно это невозможно, да и отключать в моем случае нужно не физическую флешку, а эмулированную.
насмотря ни на что отключить флешку, подкосив все исходящие с нее программы » |
тогда можно просто выдернуть - эффект тот же
AFAIK Windows не предоставляет программных интерфейсов для работы с "чужими" описателями, т.е. "отрубить" заданную программу или даже просто получить список "плохих" процессов очень проблематично. то же самое касается и сброса буферов на диск. Т.е. без сторонних утилит, написанных в дебрях MS (использующих недокументированные функции и структуры) здесь никак не обойтись, поэтому вижу лишь два пути:
1. Сброс буферов через Sync, дальше хоть выдергивай - минимум мозговых усилий.
2. Поиск "плохих" процессов/описателей через Handle, далее - либо рубить, либо автозакрытие.
Мне интересно, вся эта истерия по поводу "безопасного извлечения" только меня не коснулась?
До появления XP SP2 (да, именно тогда появилась в трее эта новая иконка) никто и не знал, что перед выдергиванием флешки нужно что-то нажимать (линуксоиды не считаются), теперь - ритуал какой-то. Некоторые (особо одаренные) предпочитают даже компьютер выключать ради этой процедуры (наиболее безопасное средство из всех безопасных).
Будто у всех флешки исключительно в NTFS форматированы и им крайне важна эта процедура.
Куда катится этот мир?
Конфигурация компьютера | |
Процессор: Intel Core i3 530 (2.93GHz) | |
Материнская плата: GigaByte GA-H55M-S2H | |
Память: 4 Гб DDR3-1333 DDR3 SDRAM | |
HDD: WDC WD10EARS-00Z5B1 (1000 Гб) | |
Видеокарта: NVIDIA GeForce GTS 250 (1024 Мб) | |
Звук: Realtek High Definition Audio | |
Блок питания: 500Вт | |
CD/DVD: HL-DT-ST DVDRAM GH22NS50 | |
Монитор: Монитор ЖК 22" Samsung SyncMaster 2223NW | |
ОС: Windows 7 |
Будто у всех флешки исключительно в NTFS форматированы и им крайне важна эта процедура. » |
Если бы при выдергивание флешки (вместо безопасного извлечения устройства) была только маленькая вероятность потери данных, то с этим в крайнем случае можно было бы смирится, но, к сожалению, бывают случаи, когда при выдергивании флешки пропадает сама флешка.
-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.
Читайте также: