Вы можете использовать System.ServiceProcess.ServiceController (получил идею от этого answer), путем запуска или остановки следующие услуги:
-windows службы активации (WAS)
-Мировой Wide Web Publishing Service (W3SVC)
Вот код, который будет делать эту работу:
//stop iis (like running "IISReset /Stop")
ResetService("WAS", false);
ResetService("W3SVC", false);
//start iis (like running "IISReset /Start")
ResetService("WAS", true);
ResetService("W3SVC", true);
private static void ResetService(string name, bool start)
{
using (var service = new System.ServiceProcess.ServiceController(name))
{
if (start && service.Status == ServiceControllerStatus.Stopped)
{
service.Start();
}
else if (!start && service.Status == ServiceControllerStatus.Running)
{
service.Stop();
}
}
}
что касается команд другой IISReset, можно закодировать в тайм-аут достаточно легко. И чтобы перезагрузить компьютер, проверьте this answer. Дайте мне знать, если вам нужны подробности.
Но если этого недостаточно для вас, вы всегда можете выполнить сценарии командной оболочки в C#, используя this technique (симпатичный балерин, если вам просто нужно выполнить «er done»).