Hi,
I had the same problem in C#. I did the following:
First I enabled DHCP.Then i copy the List of Geatways into an array.
After that I reset the Geatway manually to the last value of the array(Which is allways the Gateway recived from the DHCP server).
As a last step I enable DHCP again.
Here is my Code in C#:
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if( (bool)mo["IPEnabled"] )
{
if( mo["Caption"].Equals( nicName ) )
{
ManagementBaseObject newDNS = mo.GetMethodParameters( "SetDNSServerSearchOrder" );
newDNS[ "DNSServerSearchOrder" ] = null;
ManagementBaseObject enableDHCP = mo.InvokeMethod( "EnableDHCP", null, null);
ManagementBaseObject setDNS = mo.InvokeMethod( "SetDNSServerSearchOrder", newDNS, null);
string[] gateways = (string[])mo["DefaultIPGateway"];
ManagementBaseObject newIP = mo.GetMethodParameters("EnableStatic");
ManagementBaseObject newGate = mo.GetMethodParameters("SetGateways");
newGate["DefaultIPGateway"] = new string[] {gateways[gateways.Length-1]};
newGate["GatewayCostMetric"] = new int[] { 1 };
ManagementBaseObject setIP = mo.InvokeMethod("EnableStatic", newIP, null);
ManagementBaseObject setGateways = mo.InvokeMethod("SetGateways", newGate, null);
newDNS["DNSServerSearchOrder"] = null;
ManagementBaseObject enableDHCP2 = mo.InvokeMethod("EnableDHCP", null, null);
ManagementBaseObject setDNS2 = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
}
}
}
Maybe not the most elegant way to do it, but it works