在桌面应用程序开发过程中,需要对C盘下进行文件操作或者系统参数进行设置,例如在没有外网的情况下局域网内部自己的机python基础教程制进行时间同步校准,这是没有管理员权限便无法进行设置。 - 首先需要获得校准时间,两种方式: 通过可上网的电脑进行外部获取当前时间。
通过NTP实现
- //NTP消息大小摘要是16字节 (RFC 2030)
- byte[] ntpData = new byte[48];
- //设置跳跃指示器、版本号和模式值
- // LI = 0 (no warning), VN = 3 (IPv4 only), Mode = 3 (Client Mode)
- ntpData[0] = 0x1B;
- IPAddress ip = iPAddress;
- // NTP服务给UDP分配的端口号是123
- IPEndPoint ipEndPoint = new IPEndPoint(ip, 123);
- // 使用UTP进行通讯
- Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
- socket.Connect(ipEndPoint);
- socket.ReceiveTimeout = 3000;
- socket.Send(ntpData);
- socket.Receive(ntpData);
- socket?.Close();
- socket?.Dispose();
复制代码 2. 通过API函数设置本地时间,先通过网络获取到时间 然后调用
- [DllImport("kernel32.dll")]
- private static extern bool SetLocalTime(ref Systemtime time);
复制代码 API函数 参数结构体定义
- [StructLayout(LayoutKind.Sequential)]
- private struct Systemtime
- {
- public short year;
- public short month;
- public short dayOfWeek;
- public short day;
- public short hour;
- public short minute;
- public short second;
- public short milliseconds;
- }
复制代码
|