我试图提出一个解决方案,以编程方式启用/禁用网卡 – 我做了大量的研究,在XP和Vista环境中似乎都不是一个可行的解决方案。我在说的是,如果您进入控制面板的“网络连接”,右键单击并选择启用或禁用。理想情况下,我想使用一个图书馆,但如果更糟糕的是,我可以打电话给一个命令行程序,但绝对是最坏的情况。这是我迄今为止所尝试过的,何处/为什么他们失败:
这个上一篇文章:
列出了几种方法 – 第一种是使用netsh,这似乎与使用IPHelper函数SetIfEntry()相同。这样做的问题是它将接口设置为管理启用或禁用,而不是正常启用/禁用,因此它实际上不会关闭NIC。
提出的另一个解决方案是使用WMI,特别是具有Enable和Disable方法的Win32_NetworkAdapter类:
好吗?在Vista中工作正常,这些方法在普通XP安装中不存在…
另一个建议是使用DevCon,它真正使用了SetupAPI,特别是具有DICS_ENABLE的SetupDiSetClassInstallParams()。在这个美好的课堂上花了无数小时,并尝试在全球一级以及特定的配置级别(和每个组合)中禁用/启用设备,它不会始终如一地工作 – 有时工作正常,但其他时间禁用设备管理器中的设备,但仍然将其置于网络连接中并运行。
然后我尝试使用INetConnection接口,特别是INetConnection->连接/断开连接:
但是我从来没有能够对Vista或XP测试盒上的连接产生任何影响。
最后,我发现这个C#脚本叫做ToggleNic:
看起来它通过壳牌以某种方式有效地导致右键单击行为。限制(至少这个实现)是在非英语系统上不起作用(不需要修改),我需要我的工作。为了公平起见,这个解决方案看起来是最可行的,但是我对C#的熟悉度很低,我找不到它所使用的API是否可用于C。
任何帮助或见解将不胜感激 – 或者关于如何完成C语言脚本的想法。谢谢!