5

ウィンドウOSでUSBデバイスをアンインストールするのを手伝ってください。ラップトップから USB が 1 つ取り外されると、ラップトップに USB が 1 つ追加されたことをウィンドウ OS が記憶しているので、それをアンインストールします。

モジュール「選択したデバイスのアンインストール」のusbdeviewソフトウェアのように。これはこのソフトのリンクです: http://www.nirsoft.net/utils/usb_devices_view.html

4

2 に答える 2

4

デブコン

devcon と呼ばれるコマンドライン ツールを使用して動作するようになり、それをコードから呼び出しました。

devcon.exe をシステム パスの 1 つにドロップして、どこでも機能するようにしました。

Devcon: デブコン

呼び出し: DEVCON USB「MI_01」を削除

次に呼び出されます: DEVCON rescan

コード:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
 proc.StartInfo.FileName = "DEVCON";
 proc.StartInfo.Arguments = "Remove *usb"*MI_01";
 proc.StartInfo.RedirectStandardError = true;
 proc.StartInfo.RedirectStandardOutput = true;
 proc.StartInfo.UseShellExecute = false;
 proc.Start();
于 2012-11-19T10:46:58.620 に答える
3

最初に、ドライバーをクリアするためのユーティリティを探している場合、ここで尋ねるのは適切ではないと思います。おそらくスーパーユーザーです。

コードからドライバーを自分でアンインストールしたい場合は、.net フレームワークにドライバーをアンインストールするためのクラスがないと思います。ただし、C# を使用して実行することもできます。これには Win32 API 関数があります: DiUninstallDeviceはネイティブ呼び出しであり、API は C です。ラッパーを作成し、P/Invoke を使用して .net から呼び出す必要があります。

一般的なロジックは次のようになります: USB デバイスが切断されたことが Windows OS から通知されたら、ドライバー ツリーをスキャンし、ドライバーを特定してから、上記の関数呼び出しを使用してドライバーを削除する必要があります。

とにかく、Windows ホストは、USB デバイスの PID (製品 ID)、VID (ベンダー ID)、およびシリアル番号を使用して、デバイスを記憶しています。そのため、デバイスが再び接続されると、これらのパラメーターを使用して USB デバイスを自動的に識別し、ドライバーを検索します (もちろん、過去に既にインストールされているドライバーがある場合)。

于 2012-11-19T10:38:54.880 に答える