IPアドレスなどを静的に設定するか、自動的に設定する(DHCP)ことができる簡単なネットワーク構成ツールを、すべてWMIを使用して作成しようとしています。
残念ながら、アドレスの設定は静的に1回だけ機能します。したがって、以下のテスト関数を1回実行すると、すべてが完全に機能します(// DYNAMICのブレークポイントを忘れないでください!)。ただし、2回目に、ネットワークアダプタのコントロールパネルのプロパティページで結果を確認すると、IPアドレスとサブネットマスクは空のままになります。もちろん、スローされる例外はなく、メソッド呼び出しの結果は常にゼロ(0)です。コードは、2台の異なるWindows 7マシンで、そしてもちろん管理者としてテストされました。
void Test()
{
    // find management object
    ManagementClass networkManagementClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection networkManagement = networkManagementClass.GetInstances();
    ManagementObject adapter = null;
    foreach (ManagementObject mo in networkManagement)
    {
        if ((bool)mo["IPEnabled"] && (string)mo["Caption"] == "[00000012] Intel(R) 82577LM Gigabit Network Connection")
        {
            adapter = mo;
            break;
        }
    }
    // STATIC
    var val = adapter.InvokeMethod("EnableStatic", new object[] {
        new string[] { "192.168.1.99" },
        new string[] { "255.255.255.0" }
    });
    val = adapter.InvokeMethod("SetGateways", new object[] {
        new string[] { "192.168.1.254" },
        new UInt16[] { 1 }
    });
    val = adapter.InvokeMethod("SetDNSServerSearchOrder", new object[] {
        new string[] { "192.168.1.254" }
    });
    // DYNAMIC
    adapter.InvokeMethod("SetDNSServerSearchOrder", new object[] { new string[0] });
    adapter.InvokeMethod("EnableDHCP", new object[] { });
}