Необходимо получить права администратора и изменить файл
я пытаюсь выполнить следующий код:
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. Заранее благодарю.