Я пытаюсь программно перезапустить службу из вспомогательного приложения, написанного на C # (на .net 4.0), но я получаю нарушение прав, если запускаю EXE двойным щелчком при щелчке правой кнопкой мыши и выполнении «Запуск от имени администратора» работы.
Но зачем мне это, пользователи локальные админы?!
Я бы хотел, чтобы приложение работало нормально и запрашивало права администратора только тогда, когда пользователь нажимает кнопку, чтобы перезапустить службу. Можно ли это сделать?
Решение должно работать на XP, Vista и Windows 7.
Я использую этот код из http://www.csharp -examples.net / restart-windows-service /
public static void RestartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
try
{
int millisec1 = Environment.TickCount;
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
// count the rest of the timeout
int millisec2 = Environment.TickCount;
timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2-millisec1));
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch
{
// ...
}
}