什么是安排重启的最佳方法?

时间:2011-12-01 17:38:46

标签: c#

我正在尝试使用c#在winxp上安排重启程序 目前,我编程它在winxp中添加一个计划任务,在5分钟内重启 但是,它并不总是有效,因为重启后机器时间可能会改变(我的环境中有时间服务器)。这意味着计划的任务时间不准确,反过来我的重新启动在预期的时间内不起作用。

例如,当我添加计划的重启任务时,机器时间是上午11点05分,重启计划的时间是上午11点10分。然后我加入xp到域并重新启动,时间与时间服务器同步,机器更改为1:01 pm。 在这种情况下,计划任务在同一天的上午11点10分有一段时间,它已经过去了。当然它不会起作用。

所以任何人都知道其他任何方式吗? ps:在将xp加入域之前使用此程序 并重新启动,因为它是第二次重启,我需要它自动重启而无需用户交互

2 个答案:

答案 0 :(得分:5)

通过从C#启动新进程来使用内置shutdown命令:

using System;
using System.Diagnostics;

namespace ShutdownApp
{
    class ShutdownApp
    {
        static void Main(string[] args)
        {
            Process shutDown = new Process();
            int shutdownTimeInSeconds = 600; // this will shutdown in 10 minutes, use DateTime and TimeSpan functions to calculate the exact time you need    
            shutDown.StartInfo.FileName  = "shutdown.exe";
            shutDown.StartInfo.Arguments = string.Format("-r -t {0}", shutdownTimeInSeconds);

            shutDown.Start();
        }
    }
}

答案 1 :(得分:-1)

在添加计划任务之前,您需要遵循@JohnSaunders建议并强制执行时间同步。您可以使用NTP或SNTP执行此操作。请参阅this post