using System; using System.Collections.Generic; using System.Linq; using System.Net.NetworkInformation; using System.Text; using System.Threading.Tasks; namespace XiaoZhiSharp.Utils { public class SystemInfo { /// /// 获取 MAC 地址 /// /// public static string GetMacAddress() { string macAddresses = ""; foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { // 仅考虑以太网、无线局域网和虚拟专用网络等常用接口类型 if (nic.OperationalStatus == OperationalStatus.Up && (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet || nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || nic.NetworkInterfaceType == NetworkInterfaceType.Ppp)) { PhysicalAddress address = nic.GetPhysicalAddress(); byte[] bytes = address.GetAddressBytes(); for (int i = 0; i < bytes.Length; i++) { macAddresses += bytes[i].ToString("X2"); if (i != bytes.Length - 1) { macAddresses += ":"; } } break; // 通常只取第一个符合条件的 MAC 地址 } } return macAddresses.ToLower(); } /// /// 生成客户端UUID(UUID v4格式) /// /// UUID字符串 public static string GenerateClientId() { return Guid.NewGuid().ToString(); } /// /// 获取应用程序版本 /// /// 版本字符串 public static string GetApplicationVersion() { var assembly = System.Reflection.Assembly.GetExecutingAssembly(); var version = assembly.GetName().Version; return version?.ToString() ?? "1.0.0"; } /// /// 获取User-Agent字符串 /// /// 应用名称 /// 版本号 /// User-Agent字符串 public static string GetUserAgent(string appName = "xiaozhi-sharp", string? version = null) { version ??= GetApplicationVersion(); return $"{appName}/{version}"; } } }