2017년 3월 21일 화요일

Command 명령어를 이용한 내부네트워크 제어

Q) 옛날 도스 명령어를 C# 코드에 삽입하여 코딩함.
   --> 예제) 프로그램 로딩시 내부네트워크 제어


  private void ControlInsideNetWork()
        {
            ProcessStartInfo cmd = new ProcessStartInfo();
            Process process = new Process();
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            //var networks = NetworkInterface.GetAllNetworkInterfaces();
            cmd.FileName = @"cmd";
            cmd.CreateNoWindow = false;
            cmd.UseShellExecute = false;
            cmd.RedirectStandardOutput = true;
            cmd.RedirectStandardInput = true;
            cmd.RedirectStandardError = true;
            string adapter = string.Empty;
            IPHostEntry host;
            string localIP = string.Empty;
            host = Dns.GetHostEntry(Dns.GetHostName());
            //int count = 0;
            int RowCount = 0;
            //활성화 여부 체크
            foreach (NetworkInterface UseYn in nics)
            {
                if (UseYn.OperationalStatus.ToString().Trim() == "Up")
                {
                    RowCount++;
                }
            }
            //내부네트워크 체크
            for (int i = 0; i < host.AddressList.Length; i++)
            {
                //if (host.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                //    count++;
                if (host.AddressList[i].AddressFamily == AddressFamily.InterNetwork &&
                    host.AddressList[i].ToString().Substring(0, 3) == "172")
                    localIP = LocalName;
            }
            //개수 체크
            if (RowCount > 2)
            {
                process.StartInfo = cmd;
                process.Start();
                // Command 명령어 삽입
                process.StandardInput.Write(@"netsh interface set interface name = " + "\"" + localIP + "\" admin= disabled" + Environment.NewLine);
                process.StandardInput.Close();
                string resultValue = process.StandardOutput.ReadToEnd();
                process.WaitForExit();
                process.Close();
            }

        }
 ==> PC 안에 내부네트워크 셋팅함.
 private void DNSSetting()
        {
            ProcessStartInfo cmd = new ProcessStartInfo();
            Process process = new Process();
            cmd.FileName = @"cmd";
            cmd.CreateNoWindow = true;
            cmd.UseShellExecute = false;// false
            cmd.RedirectStandardOutput = true;
            cmd.RedirectStandardInput = true;
            cmd.RedirectStandardError = true;
           
            foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet && ni.Name.Contains("로컬"))
                {
                    LocalName = ni.Name;
                }
            }
           
            process.StartInfo = cmd;
            process.Start();
           
            process.StandardInput.Write(@"netsh interface ipv4 set dns name = " + "\"" + LocalName + "\" static 172.31.7.30 " + Environment.NewLine);
            process.StandardInput.Write(@"netsh interface ipv4 add dns name = " + "\"" + LocalName + "\" 172.31.11.30 index=2 " + Environment.NewLine);
            process.StandardInput.Write(@"netsh interface ipv4 set wins name = " + "\"" + LocalName + "\" static 172.31.11.30 " + Environment.NewLine);
            process.StandardInput.Write(@"netsh interface ipv4 add wins name = " + "\"" + LocalName + "\" 172.31.7.30 index=2 " + Environment.NewLine);
           
           
            process.StandardInput.Close();
            string resultValue = process.StandardOutput.ReadToEnd();
            process.WaitForExit();
            process.Close();



        }


댓글 없음:

댓글 쓰기

엑셀 파일 데이타 강제로 담기

http://leemcse.tistory.com/entry/C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9C%BC%EB%A1%9C-Excel-File%EC%9D%84-%EB%B6%88%EB%9F%AC%EC%98%A4%EA...