如何在VC ++中禁用Windows TCP / IP堆栈[以编程方式]

时间:2009-04-14 10:30:52

标签: c++ visual-c++ networking tcp uninstall

我想知道如何在[VC ++] [编程]中禁用 Windows TCP / IP堆栈。

我们正在使用winpcap进行一些原始套接字编程。因此,我们的应用程序不需要Windows TCP / IP堆栈,我们希望在应用程序启动时卸载它。

4 个答案:

答案 0 :(得分:7)

TCP / IP堆栈是任何现代操作系统的重要组成部分,包括最新版本的MS Windows。正如MS knowlegebase Q299357(谈到Win XP)所述:

  

由于TCP / IP是Windows的核心组件,因此无法将其删除。

无论如何,即使有可能,也没有使用TCP / IP的程序(这是最现代的软件,因为大多数包含某种网络集成,自动更新等)都可以使用。大多数人可能会以神秘的方式失败,因为没有人测试过这种配置。

所以简短的回答是:不要这样做。

也许您可以解释为什么您认为有必要删除TCP / IP网络?然后我们可以帮助你。

修改

根据您在下面的评论,如果您想绕过/禁用TCP / IP堆栈的ARP处理,那么WinPcap应该允许您这样做。如果没有,您可能需要编写自己的Windows网络驱动程序。再次,这似乎非常复杂和侵入性。您能否描述一下您的应用程序的作用以及为什么您甚至需要处理低级别网络?

答案 1 :(得分:1)

禁用TCP / IP并不常见。我们倾向于在我们的主机上禁用它,以便VM可以不间断地使用IP堆栈。

您可以通过转到相关适配器的连接属性页面并取消选中TCP / IP框来手动禁用它(如果安装了IPv6,可能会有多个)。

经过一些简短的调查后,看起来好像WMI不支持以编程方式更改此属性。但是,看起来好像HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Linkage \ Bind是存储启用了TCP / IP的每个适配器的密钥。从该列表中删除适配器(使用win32注册表API)可能会禁用TCP / IP。

测试时要小心...

答案 2 :(得分:1)

您需要在MSDN上拨打WSCDeinstallProviderdocumented。您还需要使用WSCEnumProtocols枚举提供程序。

我不确定你的尝试是否有效,但我祝你好运。如果你成功,请告诉我们。

答案 3 :(得分:1)

我知道它没有直接回答这个问题,但由于我一整天都在寻找完全相同的东西,我虽然可以给别人找到解决方案。

我发现了一个名为nvspbind的工具。它可用于设置正确的绑定并启用/禁用任何NIC上的特定绑定。

它使用名为INetCfg的接口。如果您不想使用该工具并以编程方式执行,那么这就是您应该使用的界面。

我还是学生,所以我可能错了。