核心程式碼片段
// 啟用靜態 IP
mo.InvokeMethod("EnableStatic", iObj, null);
// 設定閘道
iObj = mo.GetMethodParameters("SetGateways");
iObj["DefaultIPGateway"] = gateways; // string[] 閘道陣列
iObj["GatewayCostMetric"] = gatewayCostMetric; // int[] 對應度量
oObj = mo.InvokeMethod("SetGateways", iObj, null);
// 設定 DNS
iObj = mo.GetMethodParameters("SetDNSServerSearchOrder");
iObj["DNSServerSearchOrder"] = dnsServers; // string[] DNS 陣列
oObj = mo.InvokeMethod("SetDNSServerSearchOrder", iObj, null);
啟用 DHCP
public void EnableDHCP()
{
foreach (ManagementObject mo in moc)
{
if (!(bool)mo["IPEnabled"]) continue;
if (!(bool)mo["DHCPEnabled"])
{
iObj = mo.GetMethodParameters("EnableDHCP");
oObj = mo.InvokeMethod("EnableDHCP", iObj, null);
}
}
}
完整流程說明
- 查詢
Win32_NetworkAdapterConfiguration 且 IPEnabled=true 的網卡。
- 呼叫
EnableStatic 設定 IP/子網路遮罩 (需構造 iObj["IPAddress"]、iObj["SubnetMask"] 陣列)。
- 呼叫
SetGateways 設定預設閘道與度量。
- 呼叫
SetDNSServerSearchOrder 設定 DNS 伺服器清單。
- 或呼叫
EnableDHCP 切回自動取得 IP。
注意事項
- 需參考
System.Management.dll 並以管理員權限執行。
- IP/閘道/DNS 皆為字串陣列,支援多值 (如多 DNS)。
- 變更後網路可能短暫中斷,建議提供使用者確認提示。