Это похоже на работу:
using System;
using System.Runtime.InteropServices;
namespace ClockResync
{
class Program
{
[DllImport("w32time.dll")]
public static extern uint W32TimeSyncNow([MarshalAs(UnmanagedType.LPWStr)]String computername, bool wait, uint flag);
static void Main(string[] args)
{
Console.WriteLine(W32TimeSyncNow("computername", true, 8).ToString());
Console.ReadLine();
}
}
}
Это недокументировано, поэтому я не совсем уверен, что это за возможные флаги, но 8, похоже, отлично справляется с этой задачей - проверено с помощью системных часов. Если вы работаете в 64-битной Windows, скомпилируйте для 64-битной, иначе вы получите исключения нарушения прав доступа.
W32TimeQueryStatus
должно быть в состоянии получить время последней успешной синхронизации. Я над этим поработаю, когда у меня будет больше времени.