본문으로 바로가기
[c#] 로컬 네트워크 어뎁터 IPv4 정보 획득

각자 컴퓨터의 IP 세팅을 처음 하거나 세팅이후에 변경해야 될 값이 있어서 네트워크 정보에 들어가서 IP 정보를 수정해야 될 일이 있었는데 모두에게 반복된 이야기나 혹은 들어가는 순서를 PPT등을 제작을 해야 하는 불편함이 있어서 어려움이 있었습니다.

사용자 삽입 이미지

그래서 현재 세팅되어 있는 IP정보를 가져와서 IP, 서브넷마스크, 게이트웨이, DNS1, DNS2 번등의 정보를 모두 가져와서 쉽게 입력하고 많은 항목을 꼭 변경되야 될 항목만으로 제한하여서 프로그램을 주고 이 부분만 변경을 하고 적용 누르면 된다고 하니 모두들 편하게 할 수 있었습니다.

해당 프로그램을 만들던중 일단 기존 세팅된 정보를 가져오는 부분입니다.
※ 네트워크 어뎁터(랜카드)가 1개라는 가정하에서 소스를 변경하였습니다.

#정보 획득 부분
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
                {
                    //Console.WriteLine(ni.Name);
                    // Only display informatin for interfaces that support IPv4.
                    if (ni.Supports(NetworkInterfaceComponent.IPv4) == true)
                    {
                        foreach (GatewayIPAddressInformation gipi in ni.GetIPProperties().GatewayAddresses)
                        {
                            string GeteWay = Convert.ToString(gipi.Address);
                            MainForm.MainApp.InvokeText(MainApp.txtBox4, GeteWay);
                            //Console.WriteLine("Gateways : {0}", GeteWay);
                        }

                        foreach (UnicastIPAddressInformation uipi in ni.GetIPProperties().UnicastAddresses)
                        {
                            if (uipi.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                            {
                                if (ni.NetworkInterfaceType != NetworkInterfaceType.Loopback)
                                {
                                    string IPAddress = uipi.Address.ToString();
                                    MainForm.MainApp.InvokeText(MainApp.txtBox2, IPAddress);

                                    string SubNetMask = uipi.IPv4Mask.ToString();
                                    MainForm.MainApp.InvokeText(MainApp.txtBox3, SubNetMask);

                                    //Console.WriteLine("IP Address : {0}", IPAddress);
                                    //Console.WriteLine("SunetMask : {0}", SubNetMask);
                                    
                                }
                                else
                                {
                                    continue;
                                }
                            }
                            //Console.WriteLine("IP Addresses: {0}\nSubNet: {1}", uipi.Address, uipi.IPv4Mask);
                        }
                    }
                }


#정보 세팅 부분
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection objMOC = objMC.GetInstances();

            foreach (ManagementObject objMO in objMOC)
            {
                if ((bool)objMO["IPEnabled"] == false)
                    continue;


                try
                {
                    var objNewIP = objMO.GetMethodParameters("EnableStatic");
                    var objNewGate = objMO.GetMethodParameters("SetGateways");
                    var objNewDns = objMO.GetMethodParameters("SetDNSServerSearchOrder");

                    // Gateway가 설정된 넘만 찾는다
                    var defaultIpGateway = objMO["DefaultIPGateway"];
                    if (defaultIpGateway == null)
                        continue;

                    // 세팅
                    objNewGate["DefaultIPGateway"] = new string[] { gateway };
                    objNewGate["GatewayCostMetric"] = new int[] { 1 };
                    objNewIP["IPAddress"] = new string[] { ipaddress };
                    objNewIP["SubnetMask"] = new string[] { subnetmask };
                    dns2 = dns2 ?? "";
                    objNewDns["DNSServerSearchOrder"] = new string[] { dns1, dns2 };
                    var resNewIp = (uint)objMO.InvokeMethod("EnableStatic", objNewIP, null)["returnValue"];
                    var resNewGate = (uint)objMO.InvokeMethod("SetGateways", objNewGate, null)["returnValue"];
                    var resNewDns = (uint)objMO.InvokeMethod("SetDNSServerSearchOrder", objNewDns, null)["returnValue"];

                    if (resNewIp != 0)
                        return false;
                    if (resNewGate != 0)
                        return false;
                    if (resNewDns != 0)
                        return false;
                }
                catch (Exception)
                {
                    return false;
                }
            }



크리에이티브 커먼즈 라이센스
Creative Commons License

트랙백

http://trudy.kr/trackback/14
  1. fortnite hack

    fortnite hack

    Trudy :: [c#] 로컬 네트워크 어뎁터 IPv4 정보 획득 2019/08/14 04:37

  2. Fortnite Hacks

    Fortnite Hacks

    Trudy :: [c#] 로컬 네트워크 어뎁터 IPv4 정보 획득 2019/08/24 11:03

댓글을 달아 주세요

Trudy
Trudy 님의 블로그
MENU
VISITOR 오늘173 / 전체369437