Как я могу перезапустить IIS из кода C #, работающего как пользователь, который является администратором? - PullRequest
7 голосов
/ 24 октября 2011

Обычно (в Windows 7) при установке программы запрашивается разрешение на изменение системы.Как администратор я могу дать авторизацию без указания пароля.

Я пытаюсь выяснить, как выполнить действие администратора (перезапустить IIS) из кода C #, работающего от имени пользователя, который является администратором AN, но не учетной записью «Администратор».

Ответы [ 6 ]

3 голосов
/ 24 октября 2011

Для запуска процесса с повышенными привилегиями вы можете использовать runas глагол.

Process elevated = new Process();
elevated.StartInfo.Verb = "runas";
elevated.StartInfo.FileName = "Whatever.exe";
elevated.Start();

Для перезапуска IIS (как упоминалось ранее) используйте iisreset.

Надеюсь, вы найдете это полезным.

2 голосов
/ 06 мая 2017
System.Diagnostics.Process.Start(@"C:\Windows\System32\iisreset.exe");

этот код поможет вам, но вы можете получить доступ запрещен.

За то, что вы не получите доступ запрещен;

1) Проект правой кнопкой мыши 2) Добавить новый пункт 3) Добавить файл манифеста приложения введите описание изображения здесь

4) изменить этот код

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

как это

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
2 голосов
/ 06 июля 2016

Для тех, кто все еще ищет это, вот код, который я использую, чтобы помочь мне с этим.

    private static void DoIISReset()
    {
        Process iisReset = new Process();
        iisReset.StartInfo.FileName = "iisreset.exe";
        iisReset.StartInfo.RedirectStandardOutput = true;
        iisReset.StartInfo.UseShellExecute = false;
        iisReset.Start();
        iisReset.WaitForExit();
    }

Надеюсь, это поможет!

2 голосов
/ 24 октября 2011

Попробуйте выполнить команду IISReset из C #

http://technet.microsoft.com/en-us/library/cc758159(WS.10).aspx

iisreset /noforce

Использование ProcessStart

System.Diagnostics.Process.Start(@"C:\Windows\System32\iisreset.exe");

Если вы используете Аутентификацию AD и являетесь администратором, это должно работать

0 голосов
/ 31 июля 2018

Есть два способа сделать это, но для обоих вам нужно запустить VS от имени администратора.

  1. Этот код будет запрашивать пустое значение cmd в течение некоторого времени.и закроет окно автоматически.

    Process iisReset = new Process(); iisReset.StartInfo.FileName = "iisreset.exe"; iisReset.StartInfo.RedirectStandardOutput = true; iisReset.StartInfo.UseShellExecute = false; iisReset.Start(); iisReset.WaitForExit();

  2. этот код также перезапускает IIS и запрашивает CMD с небольшой обработкой.

    Process.Start(@"C:\WINDOWS\system32\iisreset.exe", "/noforce");

0 голосов
/ 24 октября 2011

Вот ссылка на то, как это делается в Power Shell http://www.computerperformance.co.uk/powershell/powershell_service_start.htm

Другая возможность - использовать WMI. http://www.motobit.com/tips/detpg_vbs-wmi-restart-service/

Вот еще один способ прямо в # http://www.csharp -examples.net / рестарт-окна-сервис /

Надеюсь, это поможет ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...