news 2026/10/29 17:04:53

代码开源,C#获取mac电脑的开机时间!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码开源,C#获取mac电脑的开机时间!

代码开源:

在macOS中使用P/Invoke 原理,C#获取mac电脑的开机时间!

无废话,代码如下:

using System; using System.Runtime.InteropServices; namespace YuanMacLib { public class MacBootTime { [DllImport("libc")] private static extern int sysctl(int[] name, uint namelen, IntPtr oldp, ref IntPtr oldlenp, IntPtr newp, uint newlen); // 对应 sysctl 的 kern.boottime 常量 private static readonly int[] MIB = { 1, 21 }; // CTL_KERN = 1, KERN_BOOTTIME = 21 public static DateTime GetBootTime() { IntPtr size = IntPtr.Zero; // 第一次调用获取数据长度 if (sysctl(MIB, 2, IntPtr.Zero, ref size, IntPtr.Zero, 0) != 0) throw new Exception("sysctl failed"); // 分配内存并获取数据 IntPtr buffer = Marshal.AllocHGlobal(size); try { if (sysctl(MIB, 2, buffer, ref size, IntPtr.Zero, 0) != 0) throw new Exception("sysctl failed"); // 解析 timeval 结构体(tv_sec 和 tv_usec) long seconds = Marshal.ReadInt64(buffer, 0); int microseconds = Marshal.ReadInt32(buffer, 8); // 转换为 DateTime (Unix 时间戳起点为 1970-01-01) var bootTime = DateTimeOffset.FromUnixTimeSeconds(seconds) .AddMilliseconds(microseconds / 1000.0) .LocalDateTime; return bootTime; } finally { Marshal.FreeHGlobal(buffer); } } } }

计算开机以来的时间:

TimeSpan tspMacStartTimeGo = DateTime.Now - MacBootTime.GetBootTime();

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 23:09:39

ponytail插件与skill全解析:从热词到工作流收束实践

1. 从“ponytail”这个热词说起:它到底指什么第一次看到“ponytail”被当成一个技术词条来搜,我其实也愣了一下。字面意思就是马尾辫,一个再日常不过的发型词,怎么会跟“skill”“插件”“如何使用”这些词绑在一起冲上热搜&#…

作者头像 李华
网站建设 2026/10/13 10:14:49

Claude Code跨会话记忆实战:用claude-mem打造持久项目记忆

用Claude Code做项目开发久了,最折磨人的不是写提示词,而是每次开新会话,它都把上一轮交代的规矩忘得干干净净。你上午刚告诉它“所有函数必须写类型注解、错误信息统一走logger输出”,下午开个新窗口,它又按默认风格给…

作者头像 李华
网站建设 2026/10/28 19:27:43

秒档导出助手攻略+避坑:抖音记录只有 1 年保留期,怎么管才不丢

前言很多人以为抖音聊天记录"永远都在"——毕竟它是云端保存的,不像手机本地记录会丢。大错特错。抖音的记录有保留期:云端大约只保留近 1 年的记录。超过这个时间,或者期间记录被清理、对方删除,你可能就再也找不回来了…

作者头像 李华