J'essaye de redémarrer par programme un service depuis une application d'assistance écrite en C# (sur .net 4.0) mais je reçois une violation d'autorisation si j'exécute l'EXE en double-cliquant en faisant un clic droit et en exécutant "Exécuter en tant qu'administrateur" .UAC ou Userlevel comment le surmonter!
Mais pourquoi ai-je besoin de cela les utilisateurs sont des administrateurs locaux ?!
Je voudrais que l'application fonctionne normalement et ne demande des droits d'administrateur que lorsque l'utilisateur clique sur le bouton pour redémarrer le service. Cela peut-il être fait?
La solution doit travailler sur XP, Vista et Windows 7.
J'utilise ce code de 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
{
// ...
}
}
cela semble être une bonne approche merci je vais l'essayer demain et vous savez comment je m'entends. à votre santé. – Adrian
+1 Et le +1 ne vient pas de l'OP (encore): P –
Rubuns l'hospitalisé! Et même pas sa solution! Merci M0sa Je l'ai voté et l'ai coché comme réponse. juste pas dans les 1ms que les rubans auraient aimé !!! – Adrian