using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Net.NetworkInformation;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SMENA_IP
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Получаем все сетевые интерфейсы
            NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

            // Находим первый активный интерфейс 
            NetworkInterface selectedInterface = interfaces.FirstOrDefault(
                iface => iface.NetworkInterfaceType == NetworkInterfaceType.Ethernet && iface.OperationalStatus == OperationalStatus.Up);

            if (selectedInterface != null)
            {
                // Получаем имя выбранного интерфейса
                string networkConnectionName = selectedInterface.Name;


                string newIPv4Address = richTextBox1.Text;

                // Создаем новый процесс для выполнения 
                Process process = new Process();
                process.StartInfo.FileName = "netsh";
                process.StartInfo.Arguments = $"interface ipv4 set address name=\"{networkConnectionName}\" static {newIPv4Address} 255.255.255.0";
                process.StartInfo.UseShellExecute = false; // Не используем оболочку операционной системы
                process.StartInfo.RedirectStandardOutput = true; // Перенаправляем вывод команды

                // Запускаем процесс и ожидаем его завершения для смены IP


                process.Start();
                process.WaitForExit();


            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // Получаем все сетевые интерфейсы
            NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

            // Находим первый активный Ethernet-интерфейс 
            NetworkInterface selectedInterface = interfaces.FirstOrDefault(
                iface => iface.NetworkInterfaceType == NetworkInterfaceType.Ethernet && iface.OperationalStatus == OperationalStatus.Up);

            if (selectedInterface != null)
            {
                // Получаем имя выбранного интерфейса
                string networkConnectionName = selectedInterface.Name;
                // Получаем текущий IP-адрес для выбранного интрейфейса 
                var ipv4Addresses = selectedInterface.GetIPProperties().UnicastAddresses;
                var currentIPv4Address = ipv4Addresses.FirstOrDefault(ip => ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)?.Address.ToString();
                label1.Text = currentIPv4Address;





            }
        }


        private void button3_Click(object sender, EventArgs e)
        {
            // запущена ли программа от имени администратора 
            bool isAdmin = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
            if (isAdmin)
            {
                label2.Text = "Программа запущена от имени администратора";
            }
            else
            {
                label2.Text = "Программа не запущена от имени администратора";
            }

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
