【发布时间】:2018-07-11 15:59:28
【问题描述】:
我是 C# 新手,必须用 C# 开发一个 Windows 窗体应用程序。此应用程序应跟踪以下内容。
- 监控外部和内部的 CD/DVD 驱动器。
- 监控在 CD/DVD 驱动器上创建、修改和删除的文件。
我可以通过RegisterNotification 和在WndProc 方法中跟踪WM_DEVICECHANGE 消息来获得CD/DVD 驱动器插入的系统通知。
上面的实现让我知道新设备何时连接到 PC。
我面临的问题是如何跟踪 CD/DVD 上发生的文件更改(写入/修改)。一种选择是将 CD/DVD 中的文件作为后台作业进行轮询。但是,这将是最后的选择。
我找到了IMAPI,我们可以通过它写入 CD/DVD,但我只需要监控文件更改以进行审计。
请指点我如何在我的程序中接收 CD/DVD 通知上的文件更改的正确方向?
我尝试过FileSystemWatcher,但它似乎不适用于 CD/DVD 驱动器。
2018 年 2 月 7 日更新:
我能找到的另一种方法是通过附加到WMI Events 的WMIqueries。我发现了一个问题Best way to detect dvd insertion in drive c#,它也可以找到答案。我想知道在 WMI 中检测 DVD 文件系统修改是否可行,以及是否有专家可以共享相同的查询。我希望Arshad 能够在这方面提供帮助。
【问题讨论】:
-
监控外部和内部驱动器是什么意思?
-
您查看过 wm_volumechange 吗?我不确定它是否适用于 DVD/CD 驱动器。
-
只有当设备存在与否时,您的计算机才会知道设备是内部设备还是外部设备。但是,filewatcher 不能在 cd/dvd 驱动器上工作吗?
-
@Maarten 我所说的内部 CD 和外部(通过 USB 端口)DVD 驱动器。