C# 禁用多个网络连接,同时只允许一个

C# 禁用多个网络连接,同时只允许一个,c#,.net,vb.net,C#,.net,Vb.net,我们希望设计一个在笔记本电脑上执行以下操作的安全应用程序: 如果使用以太网适配器(插入电缆),则禁用/阻止所有其他网络连接(无线WIFI、移动宽带(PPP)、虚拟VPN适配器等) 当不再使用以太网适配器时,允许所有连接 有没有人对如何做到这一点有什么好的建议 我们已经在WMI中查看了很多,但是没有好的方法可以做到这一点。仅禁用网络连接是不够安全的,因为大多数移动宽带应用程序都试图重新建立连接。这应该是一个适用于所有笔记本电脑供应商的应用程序,无需任何用户交互(如选择接口等) 因此,任何关于如

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

  • 如果使用以太网适配器(插入电缆),则禁用/阻止所有其他网络连接(无线WIFI、移动宽带(PPP)、虚拟VPN适配器等)
  • 当不再使用以太网适配器时,允许所有连接
有没有人对如何做到这一点有什么好的建议

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


因此,任何关于如何实现这一点的建议都将不胜感激。

最简单的方法是禁用适配器。你说这对你不管用,但我怀疑会管用。您可以检测是否有东西试图重新启用它,并采取适当的行动

如果这对你不起作用,那么下一个最简单的方法就是移除设备本身。我相信您需要使用一些非托管调用来完成此操作。有一些方法可以为你指明正确的方向

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

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

我建议您重新考虑简单地禁用网络接口,而不是进入设备级别。这是一种更干净的方法,您可以随时检测接口是否恢复。你做的任何其他事情都会有点粗俗


我唯一能想到的另一种方法是使用网络阻塞交通。请记住,并非所有网络流量都是通过IP进行的。

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

有不同的方法可以做到这一点。正如其他人在这个问题中所说,它需要在低于WMI允许的级别上完成。这里有一些C++例子来解决这个问题。查看Microsoft提供的NETCONLib库。

我不知道答案,但我怀疑您需要在远低于.NET允许的级别上执行此操作。在最佳情况下,route命令将仅限制传出流量。。不能防止来袭。话虽如此,我们已经有了诺基亚PC套件,它忽略了路由表,直接通过手机。很遗憾,route命令没有帮助。谢谢您的输入。你知道有什么好方法可以禁用这个接口吗?WMI方法disable()在XP中不起作用。我见过一些黑客,他们通过反复访问控制面板试图找到连接。。但它不适用于所有语言,因为它依赖于语言。@samuelf,对不起,我在查找代码段时遇到了问题。我可以发誓几年前我写了一些这样的东西,但现在我找不到来源。我希望windows上有类似于
ifconfig eth0 down
的东西,但我什么也没看到。我会留意的,如果我找到我的旧代码,我会在这里发布。谢谢,我很感激。。我也到处找,什么也找不到。。