gpt4 book ai didi

c# - 如果 pendrive 插入 USB 端口,如何使用 c# 检测?

转载 作者:可可西里 更新时间:2023-11-01 12:31:29 27 4
gpt4 key购买 nike

有没有办法查明在 LAN 中有人将随身驱动器插入 USB 端口的时间?以编程方式(最好在 C# 中)或通过某种工具。基本上我会想象一个客户端应用程序位于每个终端上并监视 USB 端口并将信息发送到服务器。

a.) 我可以得到正在复制的文件的详细信息吗?b.) 有没有办法在没有客户端应用程序的情况下做到这一点?

编辑

我不想完全禁用 USB 端口。它需要有基础。基本上只是希望 LAN 上的用户负责任地共享数据,并知道传输的任何数据都受到监控和记录,以后可以提出质疑。

最佳答案

[假设是 Windows,给出了 C# 注释。请相应标记]

是的,这是可能的。并且可以获得文件的详细信息。不过,这需要编程。注意 WM_DEVICECHANGE然后重新枚举驱动器。它会给你 USB pendrives,还有 SD 卡。我希望这对你来说是个奖励。

要在知道驱动器到达后获得更多详细信息,请使用 System.IO.FileSystemWatcher

更新我找到了一个更好的解决方案 - 如果您注册卷接口(interface)通知,您将获得新驱动器的卷路径。首先,使用 dbcc_classguid=GUID_DEVINTERFACE_VOLUME 创建一个 DEV_BROADCAST_DEVICEINTERFACE。然后将其传递给 RegisterDeviceNotification()。您将再次获得 WM_DEVICECHANGE,但您现在可以将消息中的 lParam 转换为 DEV_BROADCAST_DEVICEINTERFACE*

您可以将收到的 dbcc_name 传递给 GetVolumeNameForVolumeMountPoint()。您还可以将所有驱动器盘符从 GetLogicalDriveStrings() 传递到 GetVolumeNameForVolumeMountPoint()。您将拥有一个匹配的卷名;这是新驱动器。

关于c# - 如果 pendrive 插入 USB 端口,如何使用 c# 检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/271907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com