■ ManagementClass 클래스를 사용해 IP 주소를 변경하는 방법을 보여준다.
▶ ManagementClass 클래스 : IP 주소 변경하기 예제 (C#)
1 2 3 |
bool result = ChangeIPAddress("802.11n Wireless LAN Card", "192.168.0.10", "255.255.255.0", "192.168.0.1"); |
※ sourceDescription은 명령 프롬프트에서 ipconfig/all을 실행해 출력되는 '설명' 값이다.
※ DHCP를 설정하는 경우 sourceDescription만 설정하고 나머지 값들은 string.Empty로 설정하고 호출한다.
▶ ManagementClass 클래스 : IP 주소 변경하기 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System; using System.Management; #region IP 주소 변경하기 - ChangeIPAddress(sourceDescription, sourceIPAddress, sourceSubnetMask, sourceGateway) /// <summary> /// IP 주소 변경하기 /// </summary> /// <param name="sourceDescription">소스 설명</param> /// <param name="sourceIPAddress">소스 IP 주소</param> /// <param name="sourceSubnetMask">소스 서브넷 마스크</param> /// <param name="sourceGateway">소스 게이트웨이</param> /// <returns>처리 결과</returns> public bool ChangeIPAddress(string sourceDescription, string sourceIPAddress, string sourceSubnetMask, string sourceGateway) { ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection managementObjectCollection = managementClass.GetInstances(); foreach(ManagementObject managementObject in managementObjectCollection) { string description = managementObject["Description"] as string; if(string.Compare(description, sourceDescription, StringComparison.InvariantCultureIgnoreCase) == 0) { try { ManagementBaseObject setGatewaysManagementBaseObject = managementObject.GetMethodParameters("SetGateways"); setGatewaysManagementBaseObject["DefaultIPGateway" ] = new string[] { sourceGateway }; setGatewaysManagementBaseObject["GatewayCostMetric"] = new int[] { 1 }; ManagementBaseObject enableStaticManagementBaseObject = managementObject.GetMethodParameters("EnableStatic"); enableStaticManagementBaseObject["IPAddress" ] = new string[] { sourceIPAddress }; enableStaticManagementBaseObject["SubnetMask"] = new string[] { sourceSubnetMask }; managementObject.InvokeMethod("EnableStatic", enableStaticManagementBaseObject, null); managementObject.InvokeMethod("SetGateways" , setGatewaysManagementBaseObject , null); return true; } catch { return false; } } } return true; } #endregion |