Tuesday, September 11, 2012

WindowsでUSB機器を自動でOFF/ONする方法

普段はUSB HDDをつなげっぱなしで、バックアップを取る時だけ
ON/OFFしたいな的シチュエーションで使えます。
またOFFの時は、HDDがスピンダウン状態なようで温度が劇的に下がります。

DevConというツールを使います。
ダウンロードはこちらから:
MS DevCon

DevConツールはWDK(Windows Driver Kit) の中にも入ってます。
CDからの場合は Tools だけインストールすればいいかと思います。
とはいえ50個ぐらい余計なToolsもインスコされちゃいますけど。
※ 今回は 7.1.0を使います

WDK8 Windows 7, 8, Vista系用:
MS WDK8

WDK Ver.7.1.0 Windows XP, 2003など古め系用:
MS WDK7.1

WDKサポートブログ デバイスの有効無効~:
MS WDK Blog

で、
まずはHDDを接続してハードウェアIDをデバイスマネージャから確認します。

ディスクドライブの下の “対象のHDD”

USBコントローラの下の “USB大容量記憶デバイス”

この2つの “プロパティ > 詳細” にある “ハードウェアID” を調べます。
(値はCtrl+cでピーコできます)

HDDのID 例:
USBSTORDiskHitachi_HUA722020ALA330_____

USB大容量記憶デバイス ID 例:
USBVid_152d&Pid_2336&Rev_0100

※CLI好きの方は以下でもIDが確認できます:

C:> devcon.exe hwids =usb

2つの値がわかったところで.batを書きます。
devcon.exe へのパスは適宜変えてください。

まずはアンマウントバッチから。
対象HDDを先にdisableするのがポイントでしょうか。

umount.bat
@set DEVCON="C:toolsdevconi386devcon.exe"

%DEVCON% disable "USBSTORDiskHitachi_HUA722020ALA330_____"
%DEVCON% disable "USBVid_152d&Pid_2336&Rev_0100"

次にマウント系。
まずUSB大容量記憶デバイスのみを有効にします。

※たまたま使っていたPC構成だとUSB大容量記憶デバイスをリスタートしないと
HDDが有効にならなかったのでバッチはいちおう分けてrestart文を入れました。
restartしなくても動くモノもあるようです。

usb-mount.bat
@set DEVCON="C:toolsdevconi386devcon.exe"

%DEVCON% enable "USBVid_152d&Pid_2336&Rev_0100"
%DEVCON% restart "USBVid_152d&Pid_2336&Rev_0100"

最後にHDDを有効に

drive-mount.bat
@set DEVCON="C:toolsdevconi386devcon.exe"

%DEVCON% enable "USBSTORDiskHitachi_HUA722020ALA330_____"

バッチを手動でたたいて動作がOKなら、
バッチ3つをタスクマネージャに登録して時間差攻撃で実行する。

いじょ

Add comment

Fill out the form below to add your own comments