ホームページ >バックエンド開発 >C++ >C# Windows サービスを使用して USB ドライブの挿入と取り外しを検出するにはどうすればよいですか?

C# Windows サービスを使用して USB ドライブの挿入と取り外しを検出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-14 08:51:47995ブラウズ

How Can I Detect USB Drive Insertion and Removal Using a C# Windows Service?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。