Maison >développement back-end >C++ >Comment puis-je détecter l'insertion et le retrait d'une clé USB à l'aide d'un service Windows C# ?
Surveillance de l'activité de la clé USB dans un service Windows C#
Cet article explique comment créer un service Windows C# qui détecte de manière fiable les événements d'insertion et de suppression de clé USB. Ceci est crucial pour les applications conçues pour se lancer automatiquement lors de la connexion du disque et se fermer lorsque le disque est déconnecté.
Mise en œuvre de la détection d'événements USB
La méthode la plus efficace pour suivre ces événements consiste à utiliser Windows Management Instrumentation (WMI). WMI fournit une interface robuste pour interagir avec les ressources système, ce qui le rend idéal pour cette tâche.
Solution basée sur WMI
Vous trouverez ci-dessous un exemple simplifié illustrant l'application de WMI pour détecter l'insertion et le retrait d'une clé 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>
Ce code configure un observateur d'événements WMI pour écouter les événements Win32_VolumeChangeEvent
où EventType
vaut 2. Le gestionnaire d'événements watcher_EventArrived
est déclenché lorsqu'un lecteur est inséré ou retiré, vous permettant de traiter les détails de l'événement (disponible dans e.NewEvent
). Vous devrez ajouter votre logique dans la méthode watcher_EventArrived
pour déterminer le lecteur spécifique et le type d'événement (insertion ou suppression).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!