有没有办法找出什么时候在局域网中有人插入到USB端口的pendrive? 以编程方式(最好在C#中)或通过某种工具。基本上我想象一个客户端应用程序位于每个终端上并监视USB端口并将信息发送到服务器。

a。)我可以获取正在复制的文件的详细信息吗? b。)没有客户申请,有没有办法做到这一点?

修改

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

有帮助吗?

解决方案

[假设Windows,给出了C#评论。请相应标记]

是的,这是可能的。并且可以获取文件的详细信息。但是,它需要编程。请注意 WM_DEVICECHANGE 并在之后重新枚举驱动器。它将为您提供USB pendrives,还有SD卡。我希望这对你来说是一个奖励。

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

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

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

其他提示

还要检查注册表中存储有关USB设备的所有信息。 HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ USB

您可以挂钩注册表中该键的更改并对其进行操作。

这个免费的实用程序是一个很大的帮助,当你四处寻找时: http://www.nirsoft。净/ utils的/ usb_devices_view.html

您可以选择USB驱动器,选择打开该驱动器的注册表项并启用/禁用该设备等等。

在注册表中,您可以查看设备是否已连接,是否为massstorage类型和其他interresting信息。它很容易过滤regkeys以获得usb-massstorage驱动器,然后挂钩并等待更改(连接/断开连接)。

使用Windows Management Instrumentation,您可以注册以接收注册表事件: http://msdn.microsoft.com/en-us /library/aa393035(VS.85).aspx

查看.Net中的System.Management

如果它是一个小环境,并且您想要阻止使用任何USB设备,那么您可以在设备管理器中禁用USB端口,确保没有用户在计算机上设置为管理员,这应该阻止所有usb使用

如果你对它真的很偏执,只需打开机器并拔出端口。

看看这篇文章。解释消息以及如何使用它们。 检测USB驱动器移除

我从未使用它,但ic#code(sharpdevelop)的人有一个usblib。也许它可以帮到你。

http://www.icsharpcode.net/OpenSource/SharpUSBLib/default.aspx

您是否在尝试阻止使用USB拇指驱动器?如果是,则存在允许您限制访问的组策略。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top