ネットワークカードをプログラムで有効/無効にする解決策を考え出そうとしています-たくさんの調査を行いましたが、XP環境とVista環境の両方で実行可能な解決策はないようです. 私が話しているのは、コントロール パネルの [ネットワーク接続] に移動し、いずれかを右クリックして、有効または無効のいずれかを選択した場合です。理想的にはライブラリを使用したいのですが、最悪の場合はコマンドライン アプリを呼び出すことができると思っていましたが、それは絶対に最悪のケースです。これまでに試したことと、失敗した場所/理由は次のとおりです。
この前の投稿:
ネットワークインターフェイスをプログラムで有効/無効にする方法は? (Windows XP)
いくつかの方法をリストします。1 つ目は netsh を使用する方法です。これは、IPHelper 関数 SetIfEntry() を使用するのと同じように見えます。これの問題は、インターフェイスを通常の有効/無効ではなく、管理上有効または無効に設定するため、NIC を実際にシャットダウンしないことです。
提案されている別の解決策は、WMI と、特に Enable および Disable メソッドを持つ Win32_NetworkAdapter クラスを使用することです。
http://msdn.microsoft.com/en-us/library/aa394216(VS.85).aspx
いいでしょ?Vista では正常に動作しますが、これらの方法は通常の XP インストールには存在しません...
もう 1 つの提案は、SetupAPI を実際に使用する DevCon を使用することです。具体的には、DICS_ENABLE を指定した SetupDiSetClassInstallParams() を使用します。この素晴らしいクラスで数え切れないほどの時間を費やし、グローバル レベルと特定の構成レベル (およびすべての組み合わせ) の両方でデバイスを無効/有効にしようとした後、一貫して機能しません。デバイス マネージャーでデバイスを無効にしますが、ネットワーク接続ではデバイスを稼働させたままにします。
次に、INetConnection インターフェイス、具体的には INetConnection->Connect/Disconnect を使用してみました。
http://msdn.microsoft.com/en-us/library/aa365084(VS.85).aspx
しかし、これが Vista または XP テスト ボックスの接続に影響を与えることはありませんでした。
最後に、ToggleNic という C# スクリプトを見つけました。
http://channel9.msdn.com/playground/Sandbox/154712/
これは、右クリックの動作を効果的に引き起こすために、何らかの方法でシェルを通過しているように見えます。(少なくともこの実装の) 制限は、英語以外のシステムでは (変更なしでは) 動作しないことです。公平を期すために、このソリューションが最も実行可能のように見えますが、C# に精通していないため、使用している API が C++ で使用できるかどうかを確認できませんでした。
トグルニック スクリプトが C++ で行うことを達成する方法についてのアイデアや、ヘルプや洞察をいただければ幸いです。ありがとう!