有没有办法找出什么时候在局域网中谁有人插入到USB端口的pendrive?以编程方式(最好在C#中)或通过某种工具.基本上我想象一个客户端应用程序位于每个终端上并监视USB端口并将信息发送到服务器.
a.)我可以获取正在复制的文件的详细信息吗?b.)没有客户申请,有没有办法做到这一点?
编辑
我不想完全禁用USB端口.它需要有基础.基本上只是希望局域网上的用户负责地共享数据,并且知道所传输的任何数据都会受到监控和记录,以后可能会被质疑.
[假设Windows,给出了C#评论.请相应标记]
是的,这是可能的.并且可以获取文件的详细信息.但是,它需要编程.观察WM_DEVICECHANGE并在之后重新枚举驱动器.它将为您提供USB pendrives,还有SD卡.我希望这对你来说是一个奖励.
要在知道驱动器到达后获取更多详细信息,请使用System.IO.FileSystemWatcher
更新
我发现了一个更好的解决方案 - 如果您注册了卷接口通知,您将获得新驱动器的卷路径.首先,创建一个DEV_BROADCAST_DEVICEINTERFACE
具有dbcc_classguid=GUID_DEVINTERFACE_VOLUME
.然后传递给RegisterDeviceNotification()
.您将再次获得WM_DEVICECHANGE,但现在可以将消息中的lParam转换为DEV_BROADCAST_DEVICEINTERFACE*
.
你可以把dbcc_name
你收到的GetVolumeNameForVolumeMountPoint()
.您也可以通过从所有驱动器号GetLogicalDriveStrings()
来GetVolumeNameForVolumeMountPoint()
.您将拥有一个匹配的卷名称; 这是新的驱动器.