首頁 >後端開發 >C++ >如何使用 C# Windows 服務偵測 USB 隨身碟的插入與拔出?

如何使用 C# Windows 服務偵測 USB 隨身碟的插入與拔出?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-14 08:51:471035瀏覽

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 的解決方案

以下是一個簡化的範例,示範了 WMI 應用程式偵測 USB 隨身碟插入和移除的情況:

<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>

此程式碼設定一個 WMI 事件觀察程式來偵聽 Win32_VolumeChangeEvent 事件,其中 EventType 為 2。插入或移除驅動器時會觸發 watcher_EventArrived 事件處理程序,允許您處理事件詳細資訊(可用)在e.NewEvent)。 您需要在 watcher_EventArrived 方法中新增邏輯以確定特定磁碟機和事件類型(插入或刪除)。

以上是如何使用 C# Windows 服務偵測 USB 隨身碟的插入與拔出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn