检测c#中的驱动器挂载事件

如何在将新驱动器添加到“我的电脑”时捕获事件,并且最好在NTFS驱动器上创建某个驱动器的新安装点时?


我发现了这个,但它对挂载的文件夹不起作用:

_eventWatcher = new ManagementEventWatcher("SELECT * FROM Win32_VolumeChangeEvent"); _eventWatcher.EventArrived += (o, args) => {switch(args.NewEvent["EventType"].ToString()[0]) { case '2': //mount Debug.WriteLine(args.NewEvent["DriveName"]); break; case '3': //unmount break; } }; _eventWatcher.Start(); 

有任何想法吗?

如果你有一个表单,你可以覆盖它的WndProc方法来捕获WM_DEVICECHANGE消息,如Eugene所述:

 private const int WM_DEVICECHANGE = 0x219; protected override void WndProc(ref Message m) { base.WndProc(m); if (m.Msg == WM_DEVICECHANGE) { // Check m.wParam to see exactly what happened } }