Heim > Backend-Entwicklung > C++ > Wie kann ich das Einstecken und Entfernen eines USB-Laufwerks mithilfe eines C#-Windows-Dienstes erkennen?

Wie kann ich das Einstecken und Entfernen eines USB-Laufwerks mithilfe eines C#-Windows-Dienstes erkennen?

Mary-Kate Olsen
Freigeben: 2025-01-14 08:51:47
Original
993 Leute haben es durchsucht

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

Überwachen der USB-Laufwerksaktivität in einem C#-Windows-Dienst

In diesem Artikel erfahren Sie, wie Sie einen C#-Windows-Dienst erstellen, der Ereignisse beim Einstecken und Entfernen von USB-Laufwerken zuverlässig erkennt. Dies ist von entscheidender Bedeutung für Anwendungen, die beim Anschließen des Laufwerks automatisch gestartet und beim Trennen des Laufwerks geschlossen werden sollen.

Implementierung der USB-Ereigniserkennung

Die effektivste Methode zur Verfolgung dieser Ereignisse ist die Verwendung von Windows Management Instrumentation (WMI). WMI bietet eine robuste Schnittstelle für die Interaktion mit Systemressourcen und ist daher ideal für diese Aufgabe.

WMI-basierte Lösung

Unten finden Sie ein optimiertes Beispiel, das die Anwendung von WMI zur Erkennung des Einsteckens und Entfernens von USB-Laufwerken demonstriert:

<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>
Nach dem Login kopieren

Dieser Code richtet einen WMI-Ereignisbeobachter ein, der auf Win32_VolumeChangeEvent-Ereignisse wartet, bei denen EventType 2 ist. Der watcher_EventArrived-Ereignishandler wird ausgelöst, wenn ein Laufwerk eingefügt oder entfernt wird, sodass Sie die Ereignisdetails verarbeiten können (verfügbar). in e.NewEvent). Sie müssen Ihre Logik innerhalb der watcher_EventArrived-Methode hinzufügen, um das spezifische Laufwerk und die Art des Ereignisses (Einfügen oder Entfernen) zu bestimmen.

Das obige ist der detaillierte Inhalt vonWie kann ich das Einstecken und Entfernen eines USB-Laufwerks mithilfe eines C#-Windows-Dienstes erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage