找回密码
 立即注册
查看: 14|回复: 0

如何使用C#修改本地Windows系统时间

[复制链接]

30

主题

2

回帖

164

积分

管理员

积分
164
发表于 2025-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.     }
复制代码



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )

GMT+8, 2025-4-3 21:04 , Processed in 0.041071 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表