C# Windows サービスでの USB ドライブ アクティビティの監視
この記事では、USB ドライブの挿入および取り外しイベントを確実に検出する C# Windows サービスを作成する方法について詳しく説明します。これは、ドライブの接続時に自動的に起動し、ドライブが切断されたときに閉じるように設計されたアプリケーションにとって非常に重要です。
USB イベント検出の実装
これらのイベントを追跡する最も効果的な方法は、Windows Management Instrumentation (WMI) を使用することです。 WMI は、システム リソースと対話するための堅牢なインターフェイスを提供するため、このタスクに最適です。
WMI ベースのソリューション
以下は、USB ドライブの挿入と取り外しを検出するための WMI アプリケーションを示す合理的な例です。
<code class="language-csharp">using System.Management; // Initialize WMI event watcher ManagementEventWatcher watcher = new ManagementEventWatcher(); // Define the WQL query for volume change events (EventType = 2 signifies insertion/removal) WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2"); // Assign the query to the watcher watcher.Query = query; // Specify the event handler watcher.EventArrived += watcher_EventArrived; // Start monitoring watcher.Start(); // Wait for events watcher.WaitForNextEvent(); // Event handler to process drive insertion/removal events private void watcher_EventArrived(object sender, EventArrivedEventArgs e) { // Process the event data (e.NewEvent) to determine which drive was affected and whether it was inserted or removed. // ... your code to handle the event ... }</code>
このコードは、Win32_VolumeChangeEvent
イベントをリッスンするように WMI イベント ウォッチャーを設定します。EventType
は 2 です。watcher_EventArrived
イベント ハンドラーは、ドライブの挿入または取り外し時にトリガーされ、イベントの詳細 (利用可能な) を処理できるようになります。 e.NewEvent
で)。 特定のドライブとイベントのタイプ (挿入または削除) を決定するには、watcher_EventArrived
メソッド内にロジックを追加する必要があります。
以上がC# Windows サービスを使用して USB ドライブの挿入と取り外しを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。