web-dev-qa-db-ja.com

Devconで存在しないハードウェアを削除しますか?

Windows XP SP3)を搭載したマシンからのUSBプリンターの削除を自動化しています。これを行うには、Microsoftの Devcon ユーティリティを使用しています。

コマンドの実行:

devcon findall *hp*

戻り値:

USBPRINT\HEWLETT-PACKARDHP_LASERJET_PROFESSIONAL_P1606DN\7&8885729&0&USB001: HP
LaserJet Professional P1606dn
1 matching device(s) found.

コマンドの実行:

devcon remove *USBPRINT*

戻り値:

No devices removed.

ハードウェアIDとワイルドカードの複数の組み合わせを試しましたが、うまくいきませんでした。デバイスをコンピューターに接続し、上記のremoveコマンドを実行すると、ハードウェアが削除されます。

この問題は、devconパイプを使用して、デバイスが自動的に構成できるように接続されているかどうかを確認することで発生します。削除できない場合は、プラグインしていなくてもスクリプトで検出されます。

これを複数のUSBプリンターと1つのUSBマウスでテストしましたが、すべて同じ動作を示します。これは、これがDevconの正常な動作であると私に信じさせます。

回避策はありますか?接続されなくなったハードウェアエントリを削除するにはどうすればよいですか?

3
Kalamane

Devconは機能します。オペレーティングシステムに適したバージョンのdevconをターゲットにしていることを確認する必要があります。

このリンクを見てください http://freneticrapport.blogspot.com/2011/05/windows-hiddennot-connected-device.html

OSに適したdevconバージョンをインストールするには:

  • Windows DriverKitをインストールします
  • [スタート]-> [プログラム]-> [開発キット]-> [WDK XXXX]-> [ビルド環境]-> [Windows [ターゲット]]-> [Windows [ターゲット]無料ビルド環境]に移動し、[ターゲット]をビルド対象の適切なバージョンのWindowsに置き換えます。
  • WDKインストールディレクトリのsrc\setup\devconフォルダに移動し、次のコマンドを実行します。build -ceZ

次に、次のコマンドを使用してデバイスを削除できます。

devcon remove "@PCI\VEN_1000&DEV_0060&SUBSYS_1F0C1028&REV_04\4&10333E29&0&0030"

引用符に注意して @ 非表示のデバイスを削除できるようにするために必要な記号。

7
Nitrous

Devcon cannot 現在接続されていないハードウェアを削除します。これは意図された動作です。ドキュメントをもっとよく読むべきだった。

findallコマンドは、接続されているかどうかに関係なく、すべてのハードウェアを検索します。現在接続されているハードウェアのみを検索するfindコマンドを使用する必要がありました。

0
Kalamane

gregLが述べたように、devonは存在しないハードウェアを削除できます。

文字列は正しくフォーマットする必要があります。

次のバッチファイルは、入力文字列に基づいてすべてのデバイスに一致し、それらを削除します。

for /f %%i in ('devcon findall *%1*') do (devcon remove "@%%i")
0
roscoe_casita