J'ai besoin de détecter lorsqu'un nouveau lecteur est branché sur un système Windows via un port USB, un port Firewire, etc. Je suis au courant du WM_Devicechange message, mais cela nécessite une fenêtre d'ouverture afin de l'utiliser. Existe-t-il un moyen de créer un processus fond em> en C # qui détecte lorsque de nouveaux disques sont branchés? P>
Info de fond: Je veux écrire cette application pour supprimer un ver de lecteurs amovibles de la société. Le logiciel antivirus régulier n'est pas en train de le supprimer. Nous avons un script qui retirera le ver, mais il doit être couru manuellement, ce qui n'est pas assez bon pour contenir l'épidémie. P>
4 Réponses :
a Windows Service devrait faire le tour p>
Essayez de retravailler le codeProject Drivetector en tant que service et vous devriez avoir ce que vous devriez avoir ce que Vous avez besoin p>
L'a fait et ça a fonctionné. Pour un service, je devais juste m'assurer que j'ai créé un autre thread avec une boucle infinie qui a continué à appeler l'application.Aevents (). Si vous ne le faites pas, le drivetector sera suspendu et ne parviendra pas à recevoir des messages WM_Devicechange. De plus, je devais m'assurer que l'interaction de bureau est activée pour le service, car Drivetector utilise une forme cachée pour faire son travail.
En regardant en arrière sur ce projet, je me rends compte que ce n'est pas une bonne pratique pour permettre une interaction de bureau avec un service. De nos jours, je recommande de créer un exécutable régulier et de le laisser tomber dans le dossier de démarrage.
Ce blogpost montre comment gérer les événements système, https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/howdoi/?p=135 Peut-être que vous pouvez l'utiliser pour le événement que vous voulez gérer p>
N'a pas vu aucun événement système lié à un changement de périphérique, malheureusement.
Vous devrez vous abonner à Je ne suis pas tout à fait sûr de savoir comment mettre en œuvre cela, il y a longtemps. P> registerDevicénotification code> et la lier à une poignée d'état du service. Voir aussi http: // social.msdn.microsoft.com/forums/en-us/netfxbcl/thread/9AE4478A-1133-44ba-8A1C-3E4BA3856E37 . P>
Vous pouvez créer une fenêtre cachée ou exécuter un service car il doit fonctionner avec une poignée de fenêtre ou une poignée d'état de service. P>