当通过USB或其他方式连接新驱动器时,如何获得通知(C#)

7
我需要检测Windows系统中通过USB端口、firewire端口等插入的新驱动器。我知道 WM_DEVICECHANGE消息,但这需要打开一个窗口才能使用。有没有办法在C#中创建一个 后台 进程来检测新驱动器的插入?
背景信息:我想编写此应用程序来从公司可移动驱动器中删除蠕虫。常规的杀毒软件无法删除它。我们有一份可以删除这个蠕虫的脚本,但必须手动运行,这对于控制疫情来说不够好。
4个回答

4

一个Windows服务应该可以解决问题

尝试将CodeProject DriveDetector重新制作为服务,你就可以得到所需的内容了


2
做到了,而且它起作用了。对于一个服务,我只需要确保创建另一个带有无限循环的线程,不断调用Application.DoEvents()。如果你不这样做,DriveDetector将会挂起并无法接收WM_DEVICECHANGE消息。此外,我还必须确保桌面交互对于该服务是启用的,因为DriveDetector使用一个隐藏的表单来完成其工作。 - Phil
3
回顾这个项目,我意识到允许桌面与服务进行交互并不是一个好的实践。现在我建议创建一个普通可执行文件并将其放入启动文件夹中。 - Phil

1

0

很遗憾,没有看到任何与设备更改相关的系统事件。 - Phil

0

您可以创建一个隐藏的窗口或运行一个服务,因为它应该使用窗口句柄或服务状态句柄。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接