请给我一个工作代码,用于在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)。 我的要求也想重定向标准输出以获得成功消息。
答案 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
因此,请检查您尝试加载的项目是否在文件夹中。