admin 发表于 2023-10-17 11:16:35

C#获取不同平台机器的函数GetMachine()

来源:C#获取不同平台机器的函数GetMachine()-今日头条 (toutiao.com)Windows 平台
using System.Management;public string GetMachine(){var mc = new ManagementClass("Win32_ComputerSystemProduct");var moc = mc.GetInstances();var machine = string.Empty;foreach (var mo in moc){machine = mo.Properties["UUID"].Value.ToString();break;}return machine;}该方法使用 WMI(Windows Management Instrumentation)获取计算机信息,其中使用到了Win32_ComputerSystemProduct 类,它代表计算机系统中安装的产品。
Linux 平台
public string GetMachine(){var file = new System.IO.FileInfo("/etc/machine-id");if (file.Exists){using (var fs = file.OpenRead()){using (var reader = new System.IO.StreamReader(fs)){return reader.ReadToEnd().Trim();}}}else{return string.Empty;}}在 Linux 平台上,我们可以使用 /etc/machine-id 文件来获取机器的唯一标识。该文件中包含了一个 32 字节的十六进制字符串,可以作为机器的唯一标识码。
macOS 平台
public string GetMachine(){var command = new System.Diagnostics.ProcessStartInfo{FileName = "/usr/sbin/system_profiler",Arguments = "-detailLevel mini SPHardwareDataType",RedirectStandardOutput = true,UseShellExecute = false,CreateNoWindow = true};var process = System.Diagnostics.Process.Start(command);var output = process.StandardOutput.ReadToEnd();process.WaitForExit();var machine = string.Empty;foreach (var line in output.Split('\n')){if (line.Contains("Hardware UUID:")){machine = line.Trim().Split(':').Trim();break;}}return machine;}在 macOS 平台上,我们可以使用 system_profiler 命令来获取机器信息。该命令可以输出系统硬件、软件、网络等各方面的信息,我们使用它来获取机器的唯一标识码,即 Hardware UUID。
苹果手机(iOS)
iOS 提供了一个称为 identifierForVendor 的属性,它是一个唯一标识符(UUID),与设备相关联,并且在同一供应商的所有应用程序中相同。你可以使用以下代码获取该标识符:
using UIKit;public string GetMachine(){var identifier = UIDevice.CurrentDevice.IdentifierForVendor?.AsString();if (!string.IsNullOrEmpty(identifier)){return identifier;}else{return string.Empty;}}Android 设备
获取 Android 设备的唯一标识,也就是通常所说的设备 ID。在 Android 系统中,有两种方式可以获取设备 ID。
通过 Android 应用程序框架提供的 API 获取。具体来说,你可以使用以下代码:
var tm = (TelephonyManager)GetSystemService(TelephonyService);string deviceId = tm.DeviceId;GetMachine()
using Android.Content;using Android.Provider;
public string GetMachine(Context context){    string machine = string.Empty;        try    {      string androidId = Settings.Secure.GetString(context.ContentResolver, Settings.Secure.AndroidId);            if (!string.IsNullOrEmpty(androidId))      {            machine = androidId;      }    }    catch (Exception ex)    {      // 处理异常    }
    return machine;}TelephonyManager 是一个代表手机设备的类,其中 DeviceId 属性返回设备的唯一标识,通常为 IMEI 号。但是需要注意的是,不是所有的 Android 设备都有 IMEI 号码,所以 DeviceId 属性可能会返回 null。
页: [1]
查看完整版本: C#获取不同平台机器的函数GetMachine()