EnableDev


はじめに

Windows Xp 上でとある装置を制御するシステムを構築していた時のことです. 起動毎に, あるデバイスが動いたり動かなかったりする現象で悩みました. 動かないときは, Xp を再起動させれば動くようになります. (おそらく電源周りだろうと予測していたのですが) 原因をつきとめ, そういったことが起こらないようにするのが本来あるべき姿でしょうが, デモが近くて解決している暇がないとか, この部分は本筋でないのでできるだけ手を抜きたいとかのため, 動かないときは再起動して解決していたのですが, なかなか手間です.

もう少しなんとかならんもんかといじっているうちにデバイスマネージャから, いったんデバイスを無効にして, もう一度有効にすると動くことがわかりました. となると, 解決策は簡単です (根本的ではありませんが). システム起動時にバッチファイルで対象とするデバイスを無効にして, もう一度 有効にすればいいのです.

問題はバッチファイルから (コマンドラインで) デバイスの有効・ 無効を切り替える方法ですが, ネットワークカードに限定した物を作ったことがあります. それを拡張して一般化すれば済みそうです. ここで新たな問題として, どうやって一般化するかというのが出てきます. 上述のネットワークカードの有効無効ツールの場合, レジストリからそれらしきデバイス ID を拾うようにしていましたが, 今回の場合あまりにも対象が広いのでそういった技は使えそうにありません.

どうしようかいろいろ考えたのですが, 結局デバイス ID を直接指定させることにしました. もともとこういったことをやりたい人というのは, それなりにコンピュータスキルはあるでしょう.

プログラム

プログラムは こちらです. 入手して展開すると plgdev.exe というファイルが出てきます. 使い方は, 任意のデバイスを無効にしたいときは,

> plgdev.exe d "デバイスインスタンス ID"
という風に, 逆に有効にしたい時は
> plgdev.exe a "デバイスインスタンス ID"
といった感じです.

ここで, デバイスインスタンスID とは対象となるデバイスの デバイスインスタンス ID で, 調べ方は

  1. デバイスマネージャを開く
  2. 対象となるデバイスのプロパティを開く
  3. 詳細タブを選ぶ
と見ることができます.

ちなみに, このダイアログは右クリックしても「ヘルプ」しか出てきませんが, Ctrl-C を押すとちゃんとデバイスインスタンス ID はコピーされてます. 意味不明の文字の羅列なのでコピーした方が確実かもしれません.

注意事項

デバイスの中には, 無効にするとシステムがハングするとか, 再起動以外修復する方法が無いものとかがあると考えられます. 本当に無効にしてもいいデバイスかはご自分で判断ください. 当然ですが, 本プログラムによって生じたいかなる問題に関し, 作者は一切の責任を持ちません.

なお, 面倒なのでエラーチェックは厳密にしていません. 最初数回はデバイスマネージャ等で本当に無効になったか確認ください. また, エラー表示もええ加減ですので, いろいろ試したけど動かない という場合は素直にあきらめてください.

追記

後日, DevCon.exe という, 本プログラムとほとんど機能が一緒 (というより, はるかに高機能) なプログラムが, 本家 Microsoft より出ていることが判明しました (Microsoft 管理下の WEB サーバの URL はコロコロ変わるので, リンクは張りませんが, "Devcon.exe" で検索すると出てくると思います).

こんな怪しいページのプログラムを使うより, 本家のものを利用する方が懸命かと 思います(なんで必要とした時, 発見できなかったんだろう).


[戻る]