C#

如何使用C#修改本地Windows系统时间
  • 楼主 admin
  • 7002025-3-24 08:44:21

​在桌面应用程序开发过程中,需要对C盘下进行文件操作或者系统参数进行设置,例如在没有外网的情况下局域网内部自己的机python基础教程制进行时间同步校准,这是没有管理员权限便无法进行设置。

  • 首先需要获得校准时间,两种方式: 通过可上网的电脑进行外部获取当前时间。

    通过NTP实现


  1. //NTP消息大小摘要是16字节 (RFC 2030)
  2. byte[] ntpData = new byte[48];
  3. //设置跳跃指示器、版本号和模式值
  4. // LI = 0 (no warning), VN = 3 (IPv4 only), Mode = 3 (Client Mode)
  5. ntpData[0] = 0x1B;
  6. IPAddress ip = iPAddress;
  7. // NTP服务给UDP分配的端口号是123
  8. IPEndPoint ipEndPoint = new IPEndPoint(ip, 123);
  9. // 使用UTP进行通讯
  10. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  11. socket.Connect(ipEndPoint);
  12. socket.ReceiveTimeout = 3000;
  13. socket.Send(ntpData);
  14. socket.Receive(ntpData);
  15. socket?.Close();
  16. socket?.Dispose();
复制代码
2. 通过API函数设置本地时间,先通过网络获取到时间 然后调用


  1. [DllImport("kernel32.dll")]
  2.     private static extern bool SetLocalTime(ref Systemtime time);
复制代码
API函数 参数结构体定义

  1. [StructLayout(LayoutKind.Sequential)]
  2.     private struct Systemtime
  3.     {
  4.       public short year;
  5.       public short month;
  6.       public short dayOfWeek;
  7.       public short day;
  8.       public short hour;
  9.       public short minute;
  10.       public short second;
  11.       public short milliseconds;
  12.     }
复制代码



倒序浏览 看全部 全部回复
暂无回复,快来抢沙发
回复