[Windows] USBポート(その他デバイス)の有効/無効をコマンドラインプログラムから切り替える
背景
USBドングルなどで制御されたアプリケーションにおいて、複数のドングルが刺さっているとアプリケーションが起動できない等の制限下において、ドングルを抜き差しするのではなくソフトウェアから有効/無効を切り替えたいという需要があった。(そのほうが物理的にも故障が減りそうだし)
準備
マイクロソフトから提供されているdevcon.exeをダウンロード。(結論から申しますと、罠がありました。)
exeを解凍し、好きなところへコピー。
実行
(使い方はヘルプ等、ごらんください)
64bitのかたは、ia64のほうで。
32bitのかたは、i386のほうで。
C:\tool\devcon\ia64>devcon.exe /?
( ゚д゚)ホワッツ?
C:\tool\devcon\ia64>devcon.exe /?
このバージョンの c:\tool\devcon\ia64\devcon.exe は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認して、プログラムの x86
32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが必要か確認してから、ソフトウェアの発行元に問い合わせてください。
( ゚д゚)ホワイ?
しかたがないのでi386のほうでやってみる。
C:\tool\devcon\i386>devcon.exe /?
Device Console Help:
devcon.exe [-r] [-m:\\<machine>] <command> [<arg>...]
-r if specified will reboot machine after command is complete, if needed.
<machine> is name of target machine.
<command> is command to perform (see below).
<arg>... is one or more arguments if required by command.
For help on a specific command, type: devcon.exe help <command>
classfilter Allows modification of class filters.
classes List all device setup classes.
disable Disable devices that match the specific hardware or instance ID.
driverfiles List driver files installed for devices.
drivernodes Lists all the driver nodes of devices.
enable Enable devices that match the specific hardware or instance ID.
find Find devices that match the specific hardware or instance ID.
findall Find devices including those that are not present.
help Display this information.
hwids Lists hardware ID's of devices.
install Manually install a device.
listclass List all devices for a setup class.
reboot Reboot local machine.
remove Remove devices that match the specific hardware or instance ID.
rescan Scan for new hardware.
resources Lists hardware resources of devices.
restart Restart devices that match the specific hardware or instance ID.
sethwid Modify Hardware ID's of listed root-enumerated devices.
stack Lists expected driver stack of devices.
status List running status of devices.
update Manually update a device.
updateni Manually update a device (non interactive).
うごく。。。
気を取り直して、USBポートの無効化に挑戦
c:\tool\devcon\i386>devcon.exe status "@USB\VID_058F&PID_6362*"
USB\VID_058F&PID_6362\058F63626420
Name: USB Driver is running.
1 matching device(s) found.
C:\tool\devcon\i386>devcon.exe disable "@USB\VID_058F&PID_6362\058F63626420"
アクセスが拒否されました。
詰んだ
orz
.
..
...
....
.....
......
.......
........
解決
devcon.exeはWindows Driver Kit (WDK)にふくまれているToolなので、先に紹介したダウンロードページからではなく、WDKをインストールすることでも、devcon.exeが入手できます。(32bit, 64bit両方とも)
なんと、こちらを利用することで、きちんと制御できました。(管理者権限でのみ検証)
c:\Program Files (x86)\Windows Kits\8.1\Tools\x64>devcon.exe disable "@USB\VID_058F&PID_6362\058F63626420"
USB\VID_058F&PID_6362\058F63626420 : Disabled
1 device(s) disabled.
c:\Program Files (x86)\Windows Kits\8.1\Tools\x64>devcon.exe enable "@USB\VID_058F&PID_6362\058F63626420"
USB\VID_058F&PID_6362\058F63626420 : Enabled
1 device(s) are enabled.
マイクロソフトあるある。
Author And Source
この問題について([Windows] USBポート(その他デバイス)の有効/無効をコマンドラインプログラムから切り替える), 我々は、より多くの情報をここで見つけました https://qiita.com/pb_tmz08/items/1170c2d9c1966ab247e5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .