1.服务器环境:
win11更改注册表 win+R输入regedit
win11更改注册表 win+R输入regedit
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config,找到Config目录,双击Config目录下的AnnounceFlags,设为5。
3.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer,将enabled设为1。
4.更改Windows服务
打开服务管理器 WIN+R运行 输入services.msc
步骤1:配置NTP服务器
1.打开命令提示符(以管理员身份运行)
2.配置NTP服务器
w32tm /config /manualpeerlist:{}, 0x8 /syncfromflags:MANUAL
注:{}内是你要同步的外部服务器地址,例如复旦的时间同步服务器地址为:ntp.fudan.edu.cn,则完整命令如下:w32tm /config /manualpeerlist:ntp.fudan.edu.cn,0x8 /syncfromflags:MANUAL国家授时中心服务器的IP地址(210.72.145.44)ntp.fudan.edu.cn (复旦)推荐使用time-b.nist.gov1 s1a.time.edu.cn 北京邮电大学s1b.time.edu.cn 清华大学s1c.time.edu.cn 北京大学s1d.time.edu.cn 东南大学s1e.time.edu.cn 清华大学s2a.time.edu.cn 清华大学s2b.time.edu.cn 清华大学s2c.time.edu.cn 北京邮电大学s2d.time.edu.cn 西南地区网络中心s2e.time.edu.cn 西北地区网络中心s2f.time.edu.cn 东北地区网络中心s2g.time.edu.cn 华东南地区网络中心s2h.time.edu.cn 四川大学网络管理中心s2j.time.edu.cn 大连理工大学网络中心s2k.time.edu.cn CERNET桂林主节点s2m.time.edu.cn 北京大学
10.2.2.163:表示为局域网服务器IP
步骤2:启动Windows时间服务
1.重新启动Windows时间服务
net stop w32timenet start w32time
步骤3:强制同步时间
强制重新同步时间
w32tm /resync
C#客户端代码实现同步时间与
1. 同步NTP服务器时间的函数
using System;
using System.Diagnostics;public class TimeSync
{public static bool SyncTime(string ntpServer){try{// 配置NTP服务器if (!RunCommand($"w32tm /config /manualpeerlist:\"{ntpServer}\" /syncfromflags:manual /update")){return false;}// 启动Windows时间服务if (!RunCommand("net start w32time")){return false;}// 强制重新同步时间if (!RunCommand("w32tm /resync")){return false;}return true;}catch (Exception ex){Console.WriteLine($"同步时间时发生错误: {ex.Message}");return false;}}private static bool RunCommand(string command){try{ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", $"/c {command}"){RedirectStandardOutput = true,UseShellExecute = false,CreateNoWindow = true};using (Process process = Process.Start(psi)){using (System.IO.StreamReader reader = process.StandardOutput){string result = reader.ReadToEnd();Console.WriteLine(result);}}return true;}catch (Exception ex){Console.WriteLine($"执行命令 '{command}' 时发生错误: {ex.Message}");return false;}}
}
2. 校验NTP服务器时间的函数
using System;
using System.Diagnostics;public class TimeCheck
{public static bool CheckTime(){try{// 检查同步状态return RunCommand("w32tm /query /status");}catch (Exception ex){Console.WriteLine($"校验时间时发生错误: {ex.Message}");return false;}}private static bool RunCommand(string command){try{ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", $"/c {command}"){RedirectStandardOutput = true,UseShellExecute = false,CreateNoWindow = true};using (Process process = Process.Start(psi)){using (System.IO.StreamReader reader = process.StandardOutput){string result = reader.ReadToEnd();Console.WriteLine(result);}}return true;}catch (Exception ex){Console.WriteLine($"执行命令 '{command}' 时发生错误: {ex.Message}");return false;}}
}