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

需求:筆記本經常要在不同的地點連接網絡,而各地的網絡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服務器等項目的配置了。

《完》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章