C# 获取计算机唯一标识

原文链接

private static string _sFingerPrint { get; set; }

        /// <summary>
/// 计算机唯一标识
/// </summary>
public static string sFingerPrint
{
get
{
if (string.IsNullOrEmpty(_sFingerPrint))
{
_sFingerPrint = GetHash("UUID >> " + UUID() + "\r\nCPU >> " + CpuId() + "\r\nBIOS >> " +
BiosId() + "\r\nBASE >> " + BaseId() + "\r\nDisk >> " + DiskId() + "\r\nVideo >> " +
VideoId() + "\r\nMAC >> " + MacId());
}
return _sFingerPrint;
}
} /// <summary>
/// 获取硬件标识符
/// </summary>
/// <param name="wmiClass"></param>
/// <param name="wmiProperty"></param>
/// <param name="wmiMustBeTrue"></param>
/// <returns></returns>
private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
{
string result = "";
System.Management.ManagementClass mc =
new System.Management.ManagementClass(wmiClass);
System.Management.ManagementObjectCollection moc = mc.GetInstances();
foreach (System.Management.ManagementObject mo in moc)
{
if (mo[wmiMustBeTrue].ToString() == "True")
{
//Only get the first one
if (result == "")
{
try
{
result = mo[wmiProperty].ToString();
break;
}
catch
{
}
}
}
}
return result;
}
/// <summary>
/// 获取硬件标识符
/// </summary>
/// <param name="wmiClass"></param>
/// <param name="wmiProperty"></param>
/// <returns></returns>
private static string identifier(string wmiClass, string wmiProperty)
{
string result = "";
System.Management.ManagementClass mc =
new System.Management.ManagementClass(wmiClass);
System.Management.ManagementObjectCollection moc = mc.GetInstances();
foreach (System.Management.ManagementObject mo in moc)
{
//Only get the first one
if (result == "")
{
try
{
result = mo[wmiProperty].ToString();
break;
}
catch
{
}
}
}
return result;
} /// <summary>
/// 获取UUID
/// </summary>
/// <returns></returns>
public static string UUID()
{
string code = null;
SelectQuery query = new SelectQuery("select * from Win32_ComputerSystemProduct");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
foreach (var item in searcher.Get())
{
using (item)
code = item["UUID"].ToString();
}
}
return code;
} /// <summary>
/// 获取CPUID
/// </summary>
/// <returns></returns>
public static string CpuId()
{
//Uses first CPU identifier available in order of preference
//Don't get all identifiers, as it is very time consuming
string retVal = identifier("Win32_Processor", "UniqueId");
if (retVal == "") //If no UniqueID, use ProcessorID
{
retVal = identifier("Win32_Processor", "ProcessorId");
if (retVal == "") //If no ProcessorId, use Name
{
retVal = identifier("Win32_Processor", "Name");
if (retVal == "") //If no Name, use Manufacturer
{
retVal = identifier("Win32_Processor", "Manufacturer");
}
//Add clock speed for extra security
retVal += identifier("Win32_Processor", "MaxClockSpeed");
}
}
return retVal;
}
/// <summary>
/// 获取BIOSID
/// </summary>
/// <returns></returns>
public static string BiosId()
{
return identifier("Win32_BIOS", "Manufacturer")
+ identifier("Win32_BIOS", "SMBIOSBIOSVersion")
+ identifier("Win32_BIOS", "IdentificationCode")
+ identifier("Win32_BIOS", "SerialNumber")
+ identifier("Win32_BIOS", "ReleaseDate")
+ identifier("Win32_BIOS", "Version");
}
/// <summary>
/// 获取硬盘ID
/// </summary>
/// <returns></returns>
public static string DiskId()
{
return identifier("Win32_DiskDrive", "Model")
+ identifier("Win32_DiskDrive", "Manufacturer")
+ identifier("Win32_DiskDrive", "Signature")
+ identifier("Win32_DiskDrive", "TotalHeads");
}
/// <summary>
/// 获取主板ID
/// </summary>
/// <returns></returns>
public static string BaseId()
{
return identifier("Win32_BaseBoard", "Model")
+ identifier("Win32_BaseBoard", "Manufacturer")
+ identifier("Win32_BaseBoard", "Name")
+ identifier("Win32_BaseBoard", "SerialNumber");
}
/// <summary>
/// 获取主视频控制器ID
/// </summary>
/// <returns></returns>
public static string VideoId()
{
return identifier("Win32_VideoController", "DriverVersion")
+ identifier("Win32_VideoController", "Name");
}
/// <summary>
/// 获取网卡ID
/// </summary>
/// <returns></returns>
public static string MacId()
{
return identifier("Win32_NetworkAdapterConfiguration",
"MACAddress", "IPEnabled");
}

C# 获取计算机唯一标识的更多相关文章

  1. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...

  2. Android 手机上获取物理唯一标识码[转]

    所有添加有谷歌账户的设备可以返回一个 ANDROID_ID 所有的CDMA设备对于 ANDROID_ID 和 TelephonyManager.getDeviceId() 返回相同的值(只要在设置时添 ...

  3. 获取设备唯一标识 uuid(采用第三方库SSKeychain)

    SSKeyChain 下载链接: http://pan.baidu.com/s/1booV3VD 密码: ivdi /** *  获取设备唯一标识 uuid */ +(NSString*) uuid ...

  4. ios开发——实用技术篇OC篇&获取设备唯一标识

    获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS ...

  5. DeviceUuidFactory【获取设备唯一标识码的UUID(加密)】【需要运行时权限的处理的配合】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于An ...

  6. IOS7如何获取设备唯一标识

    WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了. I ...

  7. 【转】 android获取设备唯一标识完美解决方案

    <p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: rgb(51, 51, 51);  ...

  8. Android 手机上获取物理唯一标识码

    唯一标识码这东西在网络应用中非常有用,例如检测是否重复注册之类的. import android.provider.Settings.Secure;private String android_id ...

  9. Android 获取设备唯一标识码

    概述 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于Android系统版本.厂商定制系统中的Bug等限制,稳定性和唯一 ...

  10. iOS 获取手机 唯一标识-b

    存贮在keychainQuery 可以统计用户使用情况 -(void)gatherMessage{ //采集用户设备信息 NSUserDefaults *userDefaults=[NSUserDef ...

随机推荐

  1. Lombok 代码优化器

    Lombok是一种Java实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO).它通过注释实现这一目的 使用安装Lombok pom文件导入lombok Mav ...

  2. JS 面试题(2023-09-20更新)

    因JS代码实现面试题较多,移至另外一篇文章:JS面试题-代码实现 基础 JavaScript 是什么? JavaScript 是一种属于网络的脚本语言,被广泛应用于 Web 应用开发 JavaScri ...

  3. HttpClientFactory in ASP.NET Core 2.1 Part 3: 对处理器使用对外请求中间件

    HttpClientFactory in ASP.NET Core 2.1 Part 3: 对处理器使用对外请求中间件 原文地址:https://www.stevejgordon.co.uk/http ...

  4. 中电金信:加快企业 AI 平台升级,构建金融智能业务新引擎

    ​ 在当今数字化时代的浪潮下,人工智能(AI)技术的蓬勃发展正为各行业带来前所未有的变革与创新契机.尤其是在金融领域,AI 模型的广泛应用已然成为提升竞争力.优化业务流程以及实现智能化转型的关键驱动力 ...

  5. 【MyBatis】学习笔记14:通过collection解决一对多的映射关系

    MyBatis14:通过collection解决一对多的映射关系 目录 MyBatis14:通过collection解决一对多的映射关系 对象 接口 映射文件 测试 总结 注意事项 已知,一个部门对应 ...

  6. oracle用命令执行sql脚本文件

    当sql命令过多(sql文件过大)时,用plsql执行时比较慢而且容易超时,此时可以用sqlplus命令直接执行sql脚本文件,方法如下: 1.sqlplus登录 >sqlplus userna ...

  7. Mybatis Plus条件构造器condition动态判断优化

    ConditionQueryWrapper package com.common.util; import com.baomidou.mybatisplus.core.conditions.query ...

  8. Qt编写安防视频监控系统44-视频上传

    一.前言 视频上传用来将本地存储的视频文件上传到云端服务器,间接的实现了本地视频存储到云端的功能,其实本质上是先存储在本地,文件生成后再去上传到云端的,最终的效果一样就是,为了拓展兼容性,直接做了单独 ...

  9. Qt音视频开发1-vlc解码播放

    一.前言 最开始接触视频监控这块的时候,用的就是vlc作为解码的内核,主要是因为vlc使用简单方便,直接传入一个句柄即可,简单几行代码就可以实现一个视频流播放,很适合初学者使用,也推荐初学者用qt+v ...

  10. Mac系统Obsidian和Typora更换霞鹜文楷字体

    在github上发现了一款非常好看的字体LXGW WenKai / 霞鹜文楷,这里记录下Mac电脑如何安装这个字体,以及我用到的笔记软件更换字体的过程. Mac安装字体 # 增加代理,不加代理下载速度 ...