Je dois détecter lorsqu'un nouveau disque est branché sur un système Windows via un port USB, un port FireWire, etc. Je suis au courant du message WM_DEVICECHANGE , mais cela nécessite une fenêtre pour être ouvert afin de l'utiliser. Y a-t-il un moyen de créer un processus en arrière-plan en C# qui détecte quand de nouveaux lecteurs sont branchés? Informations sur l'arrière-plan: Je souhaite écrire cette application pour supprimer un ver des disques amovibles de la société. Un logiciel antivirus régulier ne parvient pas à le supprimer. Nous avons un script qui va supprimer le ver, mais il doit être exécuté manuellement, ce qui n'est pas assez bon pour contenir l'épidémie.Recevoir une notification quand un nouveau disque est connecté via USB ou autre (C#)
Répondre
A windows service devrait faire l'affaire
Essayez retravaillant le CodeProject DriveDetector en tant que service et vous devriez avoir ce que vous avez besoin
Ce spectacle BlogPost comment gérer les événements du système, https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/howdoi/?p=135 vous pouvez peut-être utiliser pour la événement que vous souhaitez gérer
N'a pas vu les événements système liés à un changement de périphérique, malheureusement. – Phil
Vous devez vous abonner à RegisterDeviceNotification
et le lier à un descripteur d'état du service. Voir aussi http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/9ae4478a-1133-44ba-8a1c-3e4be3856e37.
Je ne sais pas comment implémenter cela, il y a longtemps.
Vous pouvez créer une fenêtre masquée ou exécuter un service comme il devrait fonctionner avec un descripteur de fenêtre ou une poignée d'état de service.
- 1. Comment recevoir une notification quand une compilation réussie est terminée?
- 2. Recevoir un message ou une notification lors de l'ouverture d'un nouveau formulaire de courrier?
- 3. Détection d'un périphérique USB connecté en C
- 4. Recevoir une notification d'économiseur d'écran
- 5. Puis-je recevoir une notification quand une nouvelle journée commence?
- 6. Comment déterminer par programme comment un DVD ou un disque dur est connecté - Maître ou Esclave?
- 7. Recevoir une notification pour quand un contrôle entre dans la vue dans C#?
- 8. Périphérique USB connecté
- 9. Comment puis-je recevoir des notifications lorsqu'un périphérique USB est connecté?
- 10. Comment recharger le disque USB en C#?
- 11. Accès USB ou série en C#
- 12. Recevoir une notification d'élimination/destruction d'objets
- 13. Comment recevoir une notification lorsque IBM Queue Manager est déconnecté?
- 14. Pour recevoir une notification après le téléchargement?
- 15. Recevoir une notification lorsqu'une commande est exécutée dans l'application
- 16. Accéder au périphérique/périphérique USB connecté par l'utilisateur via Internet sur une application Web ASP.NET
- 17. J2ME: Recevoir une notification sans exécuter l'application
- 18. Comment poster et recevoir une notification?
- 19. Comment pouvons-nous recevoir une notification de fixation de volume
- 20. Comment puis-je mettre un secteur de démarrage compilé sur une clé USB ou un disque?
- 21. Notification de numérisation via WIA
- 22. C# getdrives avec type fixe mais sans disque dur USB?
- 23. Développement d'une API pour un glucomètre connecté USB
- 24. port série ou port USB?
- 25. Copie de fichiers sur un disque USB avec Ruby
- 26. l'envoi de commandes de l'imprimante via USB en C#
- 27. Piloter une imprimante POS via USB dans C#
- 28. Lecture du problème du disque flash USB
- 29. Wampserver ralentit quand Internet est connecté
- 30. Est-il possible d'utiliser TrueCrypt via une autre application? (C#)
L'a fait et cela a fonctionné. Pour un service, je devais juste m'assurer que j'avais créé un autre thread avec une boucle infinie qui continuait à appeler Application.DoEvents(). Si vous ne le faites pas, le DriveDetector se bloque et ne parvient pas à recevoir les messages WM_DEVICECHANGE. En outre, j'ai dû m'assurer que l'interaction de bureau est activée pour le service, puisque DriveDetector utilise un formulaire caché pour faire son travail. – Phil
Glad cela aidé! –
En repensant à ce projet, je me rends compte que ce n'est pas une bonne pratique d'autoriser l'interaction de bureau avec un service. De nos jours je recommande de créer un exécutable régulier et de le déposer dans le dossier de démarrage. – Phil