>백엔드 개발 >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 이벤트 감지 구현

이러한 이벤트를 추적하는 가장 효과적인 방법은 WMI(Windows Management Instrumentation)를 사용하는 것입니다. 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이 2인 EventType 이벤트를 수신하도록 WMI 이벤트 감시자를 설정합니다. 드라이브를 삽입하거나 제거할 때 watcher_EventArrived 이벤트 핸들러가 트리거되어 이벤트 세부 정보를 처리할 수 있습니다(사용 가능). e.NewEvent에서). 특정 드라이브와 이벤트 유형(삽입 또는 제거)을 결정하려면 watcher_EventArrived 메서드 내에 논리를 추가해야 합니다.

위 내용은 C# Windows 서비스를 사용하여 USB 드라이브 삽입 및 제거를 어떻게 감지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.