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

时间:2009-09-24 14:51:24

标签: c# .net windows interop

我有基于时间的测试运行,需要在测试期间多次更改系统时间。我希望能够在测试结束时将时间重新同步到域控制器时间。我有任何方法可以使用.NET代码(C#)。我正在使用在以下位置找到的p调用函数来更改时间:

Set time programmatically using C#

由于

4 个答案:

答案 0 :(得分:17)

一种简单的方法是启动进程并运行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();
    }
}

答案 1 :(得分:2)

作为其他答案的补充:

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

答案 2 :(得分:0)

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

w32tm /resync 

这既不是C#也不是.NET,但它有望满足您的要求。

答案 3 :(得分:0)

最简单的方法是使用 System.Diagnostics.Process 运行 net time 命令,并使用适当的参数同步回DC。

从命令提示符运行此命令以查看我在说什么:

net time /?