0

我正在尝试找到一种以编程方式启用和禁用计算机上的 USB 大容量存储设备的好方法,更具体地说是它使用的端口。我希望只有在执行特定导出功能时才能访问 USB 驱动器。我们的安全要求非常严格,因此我们不希望将 USB 中的程序传输到计算机或运行。

拥有 USB 功能总是有风险的,我们永远不能指望完全安全,但我们希望将攻击的可能性降到最低。

我尝试将 USBSTOR 的 reg 键值设置为 4: Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", 4, Microsoft.Win32.RegistryValueKind.DWord);

这会禁用 USB 设备,使其不会在 USB 驱动器插入插槽后自动加载。现在,当我将其重新“打开”时: Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR", "Start", 3, Microsoft.Win32.RegistryValueKind.DWord);

如果 USB 设备已插入插槽,则不会自动加载它。只有在新插入的情况下才会加载它。

打开此注册表项后,有什么方法可以强制扫描并查找 USB 设备?

或者是否有另一种方式以编程方式启用/禁用我的 USB 端口?

我研究过LibUsbDotNet,但它似乎使用硬件 ID,但问题是这些 ID 对于不同的 USB 驱动器是不同的,我想支持它们。如果可能的话,我想在端口级别切换访问,而不是在实际驱动器级别。

有什么建议吗?

编辑:我找到了港口的“位置”,它是Port_#0004.Hub_#0008,我能用这个信息做些什么吗?

Edit2:我找到了我的 USB 驱动器的“父”,它是一个 USB 根集线器。启用和禁用它有一个预期的效果,现在来了解如何通过代码来做到这一点。

4

0 回答 0