تغییر وضعیت دی ان اس DNS سیستم با سی شارپ #C

با استفاده از C # روی کتابخانه دات نت ، چگونه می توانیم سرورهای DNS را روی “دستیابی خودکار” تنظیم کنیم؟ می توانیم آدرس های IP را روی مقادیر دلخواه تنظیم کرد ؟

روش اول

پلتفرم بوی اطلاعات زیر را تاحدودی تایید می کند

اطلاعات درج شده در قسمت زیر نیازمند تایید و بررسی بیشتری هستند .

ManagementClass mClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mObjCol = mClass.GetInstances();
foreach (ManagementObject mObj in mObjCol)
{
  if ((bool)mObj["IPEnabled"])
  {
     ManagementBaseObject mboDNS = mObj.GetMethodParameters("SetDNSServerSearchOrder");
     if (mboDNS != null)
     {
        mboDNS["DNSServerSearchOrder"] = null;
        mObj.InvokeMethod("SetDNSServerSearchOrder", mboDNS, null);
     }
  }
}

کافیست بخش DNSServerSearchOrder را روی null تنظیم کنید.

توجه داشته باشید که برای تست صحیح برنامه می بایست فایل exe ایجاد شده به طریق RUN AS ADMINISTRATOR  اجرا شود .

روش دوم

این روش صحیح تر است و از تابع ای به نام GetLocalIPAddress برای پردازش وضعیت شبکه استفاده شده است .

پلتفرم بوی اجرا شدن خروجی صحیح قطعه کد زیر را تایید می کند

قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.

public void change_dns()
{
    GetLocalIPAddress();
    ManagementClass mClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection mObjCol = mClass.GetInstances();
    foreach (ManagementObject mObj in mObjCol)
    {
        if ((bool)mObj["IPEnabled"])
        {
            ManagementBaseObject mboDNS = mObj.GetMethodParameters("SetDNSServerSearchOrder");
            if (mboDNS != null)
            {
                mboDNS["DNSServerSearchOrder"] = null;
                mObj.InvokeMethod("SetDNSServerSearchOrder", mboDNS, null);
            }
        }
    }
}
public void GetLocalIPAddress()
      {
          var host = Dns.GetHostEntry(Dns.GetHostName());
          foreach (var ip in host.AddressList)
          {
              if (ip.AddressFamily == AddressFamily.InterNetwork)
              {
                  listBox1.Items.Add(ip.ToString());
              }
          }
          listBox1.Items.Add("No network adapters with an IPv4 address in the system!");
      }

 

آیا این نوشته برای شما مفید بود ؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *