Как отключить Windows TCP / IP Stack в VC ++ [Программно] - PullRequest
1 голос
/ 14 апреля 2009

Я хотел знать, как Отключить Windows TCP / IP Stack в VC ++ [Программно].

Мы занимаемся программированием сокетов с использованием winpcap. Поэтому нашему приложению не требуется Windows TCP / IP Stack, и мы хотим удалить его в момент запуска нашего приложения.

Ответы [ 4 ]

7 голосов
/ 14 апреля 2009

Стек TCP / IP является неотъемлемой частью любой современной ОС, включая последние версии MS Windows. Как объяснено на MS knowlegebase Q299357 (говоря о Win XP):

Поскольку TCP / IP является ключевым компонентом Windows, его нельзя удалить.

В любом случае, даже если бы это было возможно, ни одна программа, использующая TCP / IP (которая является наиболее современным программным обеспечением, поскольку большинство из них содержат какую-либо сетевую интеграцию, автоматическое обновление и т. Д.), Не будет работать. И большинство из них, вероятно, потерпят неудачу таинственными способами, поскольку никто не проверял эту конфигурацию.

Итак, краткий ответ: не делай этого.

Может быть, вы могли бы объяснить, почему вы считаете необходимым удалить сеть TCP / IP? Тогда мы сможем вам помочь.

Edit:

Исходя из вашего комментария ниже, если вы хотите обойти / отключить обработку ARP стека TCP / IP, тогда WinPcap должен позволить вам сделать это. Если нет, вам, вероятно, нужно написать собственный сетевой драйвер для Windows. Опять же, это кажется чрезвычайно сложным и навязчивым. Не могли бы вы описать, что делает ваше приложение и почему вам даже нужно возиться с сетью низкого уровня?

1 голос
/ 18 января 2012

Я знаю, что это не дает прямого ответа на вопрос, но, поскольку я искал одно и то же в течение целого дня, я решил дать другим решение, которое нашел.

Я нашел инструмент под названием nvspbind , который делает именно это. Его можно использовать для установки правильной привязки и включения / отключения определенных привязок на любой сетевой карте.

Используется интерфейс с именем INetCfg . Если вы не хотите использовать инструмент и делать это программно, я думаю, это интерфейс, который вы должны использовать.

Я все еще студент, поэтому могу ошибаться.

1 голос
/ 09 декабря 2009

Вам нужно будет позвонить WSCDeinstallProvider, что задокументировано на MSDN. Вам также нужно будет перечислить поставщиков, используя WSCEnumProtocols.

Я не уверен, сработает ли то, что вы пытаетесь, но я желаю вам удачи. Дайте нам знать, если вам это удастся.

1 голос
/ 06 июня 2009

Отключение TCP / IP не так уж редко. Мы склонны отключать его на нашем хост-компьютере, чтобы виртуальные машины могли бесперебойно использовать стек IP.

Вы можете отключить его вручную, перейдя на страницу свойств подключения для соответствующего адаптера и сняв флажок TCP / IP (их может быть несколько, если установлен IPv6).

После небольшого исследования кажется, что WMI не поддерживает программное изменение этого свойства. Однако, похоже, что HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Linkage \ Bind - это ключ, в котором хранится каждый адаптер с включенным протоколом TCP / IP. Удаление адаптера из этого списка (с помощью API реестра win32) может отключить TCP / IP.

Будьте осторожны при тестировании этого ...

...