C#實現網卡IP地址自由切換

來源:互聯網
上載者:User

需求:筆記本經常要在不同的地點串連網路,而各地的網路IP配置各不相同,這就導致不時的更改網卡的IP地址設定。Windows上更改IP設定很不方便,於是希望能夠開發一款能夠適用於不同網路,不同網卡的快速IP地址切換程式。

分析:關鍵在於如何?對網路介面卡的配置。其實,MS為我們提供了System.Management 命名空間下的ManagementClass類,通過它我們可以擷取和設定電腦上所有適配器的資訊。其次,就是要實現對配置資訊的儲存,這個就簡單了,可以通過將網卡資訊序列化後儲存到檔案中,然後經還原序列化取出。

實現:解決了上面兩個問題,一切就簡單了。那就讓我們開始吧,最終效果()

這裡我們著重瞭解一下ManagementClass類吧:它表示公用資訊模型 (CIM) 管理類。管理類是一個 WMI 類別,如 Win32_LogicalDisk 和 Win32_Process,前者表示磁碟機,後者表示進程(如 Notepad.exe),那麼網路介面卡就是 Win32_NetworkAdapterConfiguration 。關於Win32_NetworkAdapterConfiguration類的更多資訊(如它具有的屬性和方法),可以參考MSDN上的相關說明。

            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();

這樣就輕鬆獲得了電腦上所有網卡的執行個體了。一個WMI的執行個體我們可以用ManagementObject來表示。我們通過調用執行個體的InvokeMethod方法,來對相應的網卡IP進行配置。如:

            networkAdapter.InvokeMethod("EnableDHCP", null, null);//通過調用Win32_NetworkAdapterConfiguration類的EnableDHCP方法,設定網卡執行個體networkAdapter為自動獲得IP地址(即開啟DHCP功能)

    ManagementBaseObject parIPSetting = networkAdapter.GetMethodParameters("EnableStatic");//對於有參數的Win32_NetworkAdapterConfiguration類的方法,得先用GetMethodParameters方法來獲得參數對象,然後再給參數賦值。
    parIPSetting["IPAddress"] = new string[] {ipAddress};
    parIPSetting["SubnetMask"] = new string[] {subnetMask};
    networkAdapter.InvokeMethod("EnableStatic", parIPSetting, null);//這是一個設定IP地址及子網路遮罩的例子

有了上面的介紹類似的,我相信,只要是用心的人就可以通過MSDN上對Win32_NetworkAdapterConfiguration類欄位與方法的說明,就可以很快完成其餘的相關網卡的預設閘道及DNS伺服器等項目的配置了。

《完》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.