如何在C#代码中使用w32tm重新同步时间?

时间:2013-02-05 04:09:05

标签: c# .net

请给我一个工作代码,用于在C#.net中使用w32tm.exe实现时间同步。我已经试过了。代码如下所示。

    System.Diagnostics.Process p;
    string output;
    p = new System.Diagnostics.Process();
    p.StartInfo = procStartInfo;
    p.StartInfo.FileName = "w32tm";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;

    p.StartInfo.Arguments = " /resync /computer:xxxxx977";
    p.Start();
    p.WaitForExit();

    output = p.StandardOutput.ReadLine().ToString();
    MessageBox.Show(output);

但是我收到以下错误 指定的模块无法找到。 (0x8007007E)。 我的要求也想重定向标准输出以获得成功消息。

2 个答案:

答案 0 :(得分:1)

您可以尝试按照C#代码从NTP服务器启用日期时间同步。

顺便说一下,我猜是哪个是/ resync命令号,这样我就不必启动那个脏的外部进程

/// <summary>Synchronizes the date time to ntp server using w32time service</summary>
/// <returns><c>true</c> if [command succeed]; otherwise, <c>false</c>.</returns>
public static bool SyncDateTime()
{
    try
    {
        ServiceController serviceController = new ServiceController("w32time");

        if (serviceController.Status != ServiceControllerStatus.Running)
        {
            serviceController.Start();
        }

        Logger.TraceInformation("w32time service is running");

        Process processTime = new Process();
        processTime.StartInfo.FileName = "w32tm";
        processTime.StartInfo.Arguments = "/resync";
        processTime.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        processTime.Start();
        processTime.WaitForExit();

        Logger.TraceInformation("w32time service has sync local dateTime from NTP server");

        return true;
    }
    catch (Exception exception)
    {
        Logger.LogError("unable to sync date time from NTP server", exception);

        return false;
    }
}

详细说明:

windows有一个名为w32time的服务,它可以在你的计算机上同步时间,首先我检查服务是否正在运行,使用ServiceController类,然后,因为我不知道哪个是resync命令号,所以我可以使用ServiceController启动命令方法,我使用ProcessStart在该服务上启动dos命令:w32tm / resync

答案 1 :(得分:0)

当.Net运行时JIT处理您要进入的方法时发生错误,因为它找不到该方法使用的类型之一。

您不能介入的方法到底是做什么的,以及它使用的是什么类型/方法?

请参阅此Link

因此,请检查您尝试加载的项目是否在文件夹中。