使用.NET代码将系统时间同步到域控制器

我有基于时间的testing运行,需要在testing过程中多次更改系统时间。 我希望能够在testing结束时重新同步到域控制器的时间。 我有任何使用.NET代码(C#)的方法。 我正在改变时间使用p-invoke函数中find:

以编程方式使用C#

谢谢

Solutions Collecting From Web of "使用.NET代码将系统时间同步到域控制器"

一个简单的方法是启动一个进程并运行NET TIME命令(复制自http://blogs.msdn.com/sanket/archive/2006/11/02/synchronizing-machine-time-with-domain-controller。 aspx )

using System; using System.Diagnostics; class Program { static void Main(string[] args) { Process netTime = new Process(); netTime.StartInfo.FileName = "NET.exe"; netTime.StartInfo.Arguments = "TIME /domain:mydomainname /SET /Y"; netTime.Start(); } } 

作为对其他答案的补充:

你应该认真考虑让“当前时间”的概念以某种方式注入你的系统。 从系统时钟直接读取是非常有问题的(即使在运行应用程序时),正是因为它是全局状态。

您可以使用命令行工具w32tm来执行此操作:

 w32tm /resync 

这既不是C#和.NET,但它希望符合您的要求。

最简单的方法是使用System.Diagnostics.Process运行具有相应参数的net time命令以同步回DC。

从命令提示符运行这个来看看我在说什么:

 net time /?