VC++ で Windows TCP/IP スタックを無効にする方法 [プログラムで] を知りたいと思っていました。
winpcap を使用して生のソケット プログラミングを行っています。したがって、私たちのアプリケーションは Windows TCP/IP スタックを必要とせず、アプリケーションの起動時にアンインストールしたいと考えています。
VC++ で Windows TCP/IP スタックを無効にする方法 [プログラムで] を知りたいと思っていました。
winpcap を使用して生のソケット プログラミングを行っています。したがって、私たちのアプリケーションは Windows TCP/IP スタックを必要とせず、アプリケーションの起動時にアンインストールしたいと考えています。
TCP/IP スタックは、最近のバージョンの MS Windows を含む最新の OS の重要な部分です。MSナレッジベースQ299357(Win XPについて)で説明されているように:
TCP/IP は Windows のコア コンポーネントであるため、削除することはできません。
いずれにせよ、たとえそれが可能であったとしても、TCP/IP を使用するプログラム (ほとんどの場合、ある種のネット統合、自動更新などが含まれているため、最新のソフトウェアです) は機能しません。そして、誰もその構成をテストしていないため、ほとんどはおそらく不可解な方法で失敗するでしょう。
したがって、短い答えは次のとおりです。それをしないでください。
TCP/IP ネットワークを削除する必要があると感じる理由を説明していただけますか? それなら、私たちがあなたを助けることができるかもしれません。
編集:
以下のコメントに基づいて、TCP/IP スタックの ARP 処理をバイパス/無効にしたい場合は、WinPcap でそれを行う必要があります。そうでない場合は、おそらく独自の Windows ネットワーク ドライバーを作成する必要があります。繰り返しますが、これは非常に複雑で煩わしいようです。あなたのアプリケーションが何をするのか、なぜ低レベルのネットワークをいじる必要があるのかを説明していただけますか?
TCP/IP を無効にすることは、それほど珍しいことではありません。VM が IP スタックを中断なく使用できるように、ホスト マシンでは無効にする傾向があります。
問題のアダプターの接続プロパティ ページに移動し、TCP/IP ボックスのチェックを外すことで、手動で無効にすることができます (IPv6 がインストールされている場合は複数ある場合があります)。
簡単な調査の結果、WMI はこのプロパティをプログラムで変更することをサポートしていないようです。ただし、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\Bind は、TCP/IP が有効になっている各アダプターが格納されているキーであるように見えます。(win32 レジストリ API を使用して) そのリストからアダプターを削除すると、TCP/IP が無効になる場合があります。
これをテストするときは注意してください...
MSDN に記載WSCDeinstallProvider
されている電話番号を呼び出す必要があります。を使用してプロバイダーを列挙する必要もあります。WSCEnumProtocols
あなたの試みがうまくいくかどうかはわかりませんが、幸運を祈っています。成功したらお知らせください。
質問に直接答えないことはわかっていますが、まったく同じものを丸一日探していたので、見つけた解決策を他の人に与えることができました.
まさにこれを行うnvspbindというツールを見つけました。これを使用して、正しいバインドを設定し、任意の NIC で特定のバインドを有効または無効にすることができます。
INetCfgというインターフェースを使用します。ツールを使用せずにプログラムで実行する場合は、これを使用する必要があると思います。
まだ学生なので間違っているかもしれません。