Heim >Backend-Entwicklung >C++ >Wie kann ich das Einsetzen und Entfernen eines USB-Laufwerks in einem C#-Windows-Dienst erkennen?

Wie kann ich das Einsetzen und Entfernen eines USB-Laufwerks in einem C#-Windows-Dienst erkennen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-14 06:24:43448Durchsuche

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

C#- und Windows-Dienste: Überwachung von USB-Laufwerksverbindungen

Das Automatisieren des Startens und Herunterfahrens von Anwendungen basierend auf dem Einsetzen und Entfernen von USB-Laufwerken ist für verteilte Systeme wertvoll. In diesem Artikel werden effiziente Methoden zum Erreichen dieser Funktionalität innerhalb eines C#-Windows-Dienstes untersucht.

C#-Implementierungsstrategien

Eine robuste Lösung nutzt Windows Management Instrumentation (WMI), ein leistungsstarkes Tool zur Systemüberwachung und Ereignisverwaltung. WMI ermöglicht die Abfrage von Ereignissen im Zusammenhang mit Geräteänderungen. Ein prägnantes C#-WMI-Beispiel:

<code class="language-csharp">using System.Management;

ManagementEventWatcher watcher = new ManagementEventWatcher();
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Query = query;
watcher.Start();
watcher.WaitForNextEvent();</code>

Der Ereignishandler EventArrived wird beim Einstecken oder Entfernen des USB-Sticks ausgelöst und liefert Details zum Ereignis und zum betroffenen Laufwerk. Dieser WMI-Ansatz ist wesentlich zuverlässiger als die Verwendung von WndProc innerhalb eines Dienstkontexts.

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

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