我有基于时间的测试运行,需要在测试期间多次更改系统时间。我希望能够在测试结束时将时间重新同步到域控制器时间。我有任何方法可以使用.NET代码(C#)。我正在使用在以下位置找到的p调用函数来更改时间:
Set time programmatically using C#
由于
答案 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 /?