Необходимо получить права администратора и изменить файл

я пытаюсь выполнить следующий код:

public BlockForm()
    {
        InitializeComponent();
        string[] mass = {"str1", "str2"}//большой массив строк
        string writePath = @"C:\Windows\System32\drivers\etc\hosts";
        OutputText.Text += "Начало положено!" + Environment.NewLine;
        File.Delete(writePath);
        File.Create(writePath);

        StreamWriter sw = new StreamWriter(writePath, false, System.Text.Encoding.Default);

        for (int i = 0; i < mass.Length; i++)
            sw.WriteLine(mass[i]);
        sw.Close();

        OutputText.Text += "Дело сделано!";
    }

При запуске без прав администратора программа не запускается, причем если убрать работу со StreamWriterom все работает нормально. Я пробовал запускать с правами администратора из проводника, в этом случае файл hosts не изменялся. Права администратора получаю следующим образом:

static void Main()
    {
        WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
        bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
        MessageBox.Show(hasAdministrativeRight.ToString());
        if (hasAdministrativeRight == false)
        {
            ProcessStartInfo proc = new ProcessStartInfo();
            proc.UseShellExecute = true;
            proc.WorkingDirectory = Environment.CurrentDirectory;
            proc.FileName = Application.ExecutablePath;
            proc.Verb = "runas";

            try { Process.Start(proc); }
            catch { return; }
            Application.Exit();
        }
        else
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new BlockForm());
        }
    }

Мне совершенно не понятно почему программа при запуске без прав администратора работает корректно без использования StreamWriter'а, а также почему при запуске с правами администратора файл hosts не изменяется, извините если вопрос тривиален. Делаю я все это на windows10. Заранее благодарю.


Ответы (0 шт):