Я создал приложение winform, которое может определять, устанавливать и переключать настройки IPv4 с помощью C #.Когда пользователь хочет получить IP автоматически от DHCP, я вызываю Automatic_IP()
:
Automatic_IP:
private void Automatic_IP()
{
ManagementClass mctemp = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moctemp = mctemp.GetInstances();
foreach (ManagementObject motemp in moctemp)
{
if (motemp["Caption"].Equals(_wifi)) //_wifi is the target chipset
{
motemp.InvokeMethod("EnableDHCP", null);
break;
}
}
MessageBox.Show("IP successfully set automatically.","Done!",MessageBoxButtons.OK,MessageBoxIcon.Information);
Getip(); //Gets the current IP address, subnet, DNS etc
Update_current_data(); //Updates the current IP address, subnets etc into a labels
}
И в методе Getip
я извлекаю текущийIP-адрес, подсеть, шлюз и DNS независимо от того, что все это может быть установлено вручную или автоматически назначено DHCP, и обновите эти значения в метках с помощью метода Update_current_data()
.
Getip:
public bool Getip()
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if(!chipset_selector.Items.Contains(mo["Caption"]))
chipset_selector.Items.Add(mo["Caption"]);
if (mo["Caption"].Equals(_wifi))
{
ipadd = ((string[])mo["IPAddress"])[0];
subnet = ((string[])mo["IPSubnet"])[0];
gateway = ((string[])mo["DefaultIPGateway"])[0];
dns = ((string[])mo["DNSServerSearchOrder"])[0];
break;
}
}
}
Но проблема в том, что я не могу определить, был ли текущий IP установлен вручную или назначен автоматически, хотя я могу выбрать выбрать автоматически из DHCP из метода Automatic_IP
,ManagementObject.InvokeMethod("EnableDHCP", null);
может легко установить его на получать IP-адрес автоматически , но у меня нет возможности проверить, установлен ли IP автоматически или вручную при первом запуске приложения.
Я немного покопался инайдено похожих сообщений, таких как this .Хотя очень похожий пост существует здесь , но это касается DNS, а не настроек IP.
В основном я хочу найти, какая опция выбрана: