禁用多个网络连接,仅允许同时使用一个

时间:2011-02-17 14:56:50

标签: c# .net vb.net

我们正在设计一个在笔记本电脑上执行以下操作的安全应用程序:

  • 如果使用以太网适配器(电缆插入)禁用/阻止所有其他网络连接(无线WIFI,移动宽带(PPP),虚拟VPN适配器等)
  • 当再次使用以太网适配器时,允许所有连接。

有没有人对如何做到这一点有任何好的建议?

我们已经对WMI进行了很多调查,但没有很好的方法可以做到这一点。仅禁用网络连接不够安全,因为大多数移动宽带应用程序都尝试重新建立连接。这应该是一个适用于所有笔记本电脑供应商的应用程序,无需任何用户交互(例如选择接口等)。

因此,非常感谢任何关于如何实现这一目标的建议。

3 个答案:

答案 0 :(得分:0)

执行此操作的最简单方法是禁用适配器。你说这对你不起作用,但我怀疑它会。您可以检测某些内容是否尝试重新启用它并采取适当的行动。

如果对您不起作用,那么下一个最简单的方法就是删除设备本身。我相信你需要使用一些非托管调用来完成这项工作。有一些sample code on codeproject.com会指向正确的方向。

请记住,如果用户运行设备检查,它将再次显示。您可以monitor for DBT_DEVICEARRIVAL检测何时发生这种情况,并再次采取适当行动。

您也可以尝试简单地禁用该设备。通常虽然我已经看到当你禁用网络连接时,这正是它的作用。它可能取决于卡和操作系统。我还没有尝试过它。

我建议您重新考虑简单地禁用网络接口而不是转到设备级别。这是一种更简洁的方法,您可以随时检测界面是否恢复。你做的任何其他事情都会有些迟钝。

我能想到的唯一其他方法是使用Windows Firewall API阻止流量。请记住,并非所有网络流量都通过IP。

答案 1 :(得分:0)

嗯,这可能不是最佳解决方案,但是......您可以使用route命令禁用接口到达任何网络的能力。它可能需要对路由表进行大量调整和持续监视,但会有效地阻止接口与任何其他设备通信的能力。

答案 2 :(得分:0)

有不同的方法可以做到这一点。正如其他人在此问题中所述,它需要在比WMI允许的更低的水平上完成。有一些C ++示例可以解决此问题。查看Microsoft的.NETCONLib库。