2010-04-28 6 views
1

Est-il possible d'arrêter l'arrêt de l'ordinateur à partir du service Windows?arrêt de l'arrêt de l'ordinateur à partir du service Windows

+5

de Nice! Permettez-moi d'ajouter une autre entrée dans ma grande liste de programmes de choses ennuyeuses Do. – Will

+0

Dupliquer: http://stackoverflow.com/questions/589986/how-to-abort-shutdown-in-windows-xpvista-programatically – Oliver

+0

Ceci n'est pas un doublon à la question que vous avez publiée. Cette question parle de l'application de bureau recevant un message de fenêtre sur un arrêt qui permet d'avorter. Un service n'obtiendra pas ce message de fenêtre parce qu'il n'a pas de fenêtre. –

Répondre

0

Oui. Vous pouvez appeler l'arrêt/a l'aide Process.Start

static void Main(string[] args) 
{ 
    Process p = new Process(); 
    p.StartInfo.FileName = "shutdown"; 
    p.StartInfo.Arguments = "/r"; 
    p.Start(); 
    Thread.Sleep(5000); 
    p.StartInfo.Arguments = "/a"; 
    p.Start(); 

} 

Le code ci-dessus indique à l'ordinateur à l'arrêt et le redémarrage, attend 5 secondes, avorte il.

+1

'shutdown/a' ne fonctionne que pour les arrêts qui ont une période de temporisation. Si un utilisateur clique sur Démarrer >> Arrêter, 'shutdown/a' ne l'abandonnera pas. –

+0

Est-ce que quelque chose l'abandonnera? Et même si c'est le cas, il y a de fortes chances que la moitié de vos processus soient terminés, ce n'est probablement pas une bonne idée de l'abandonner à ce stade. – NibblyPig

0
AbortSystemShutdown 

J'ai ajouté un échantillon à ma réponse à la question similaire ici
How cancel shutdown from a windows service C#

+1

Cela ne fonctionnera pas pour la même raison que la réponse de SLC ne fonctionnera pas - AbortSystemShutdown ne réussira que lorsqu'il sera appelé "Pendant la période de temporisation d'arrêt" [Citation MSDN]. Lorsqu'un utilisateur initie une fermeture, il n'y a pas de période de temporisation. –

+0

J'avais raté ça, merci. –

Questions connexes