C#提供用户硬件唯一信息的辅助类 C#硬件信息查询类库

C#提供用户硬件唯一信息的辅助类 C#硬件信息查询类库
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4
  5 namespace  Commons
  6 {
  7     /// <summary>
  8     /// 提供用户硬件唯一信息的辅助类
  9     /// </summary>
 10     public class FingerprintHelper
 11     {
 12         public static string Value()
 13         {
 14             return pack(cpuId()
 15                     + biosId()
 16                     + diskId()
 17                     + baseId()
 18                     + videoId()
 19                     + macId());
 20         }
 21
 22         //Return a hardware identifier
 23         private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
 24         {
 25             string result="";
 26             System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
 27             System.Management.ManagementObjectCollection moc = mc.GetInstances();
 28             foreach (System.Management.ManagementObject mo in moc)
 29             {
 30                 if (mo[wmiMustBeTrue].ToString()=="True")
 31                 {
 32
 33                     //Only get the first one
 34                     if (result=="")
 35                     {
 36                         try
 37                         {
 38                             result = mo[wmiProperty].ToString();
 39                             break;
 40                         }
 41                         catch
 42                         {
 43                         }
 44                     }
 45
 46                 }
 47             }
 48             return result;
 49         }
 50
 51         //Return a hardware identifier
 52         private static string identifier(string wmiClass, string wmiProperty)
 53         {
 54             string result="";
 55             System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
 56             System.Management.ManagementObjectCollection moc = mc.GetInstances();
 57             foreach (System.Management.ManagementObject mo in moc)
 58             {
 59
 60                 //Only get the first one
 61                 if (result=="")
 62                 {
 63                     try
 64                     {
 65                         result = mo[wmiProperty].ToString();
 66                         break;
 67                     }
 68                     catch
 69                     {
 70                     }
 71                 }
 72
 73             }
 74             return result;
 75         }
 76
 77         private static string cpuId()
 78         {
 79             //Uses first CPU identifier available in order of preference
 80             //Don‘t get all identifiers, as very time consuming
 81             string retVal = identifier("Win32_Processor", "UniqueId");
 82             if (retVal=="") //If no UniqueID, use ProcessorID
 83             {
 84                 retVal = identifier("Win32_Processor", "ProcessorId");
 85
 86                 if (retVal=="") //If no ProcessorId, use Name
 87                 {
 88                     retVal = identifier("Win32_Processor", "Name");
 89
 90
 91                     if (retVal=="") //If no Name, use Manufacturer
 92                     {
 93                         retVal = identifier("Win32_Processor", "Manufacturer");
 94                     }
 95
 96                     //Add clock speed for extra security
 97                     retVal +=identifier("Win32_Processor", "MaxClockSpeed");
 98                 }
 99             }
100
101             return retVal;
102         }
103
104         //BIOS Identifier
105         private static string biosId()
106         {
107             return identifier("Win32_BIOS", "Manufacturer")
108                     + identifier("Win32_BIOS", "SMBIOSBIOSVersion")
109                     + identifier("Win32_BIOS", "IdentificationCode")
110                     + identifier("Win32_BIOS", "SerialNumber")
111                     + identifier("Win32_BIOS", "ReleaseDate")
112                     + identifier("Win32_BIOS", "Version");
113         }
114
115         //Main physical hard drive ID
116         private static string diskId()
117         {
118             return identifier("Win32_DiskDrive", "Model")
119                     + identifier("Win32_DiskDrive", "Manufacturer")
120                     + identifier("Win32_DiskDrive", "Signature")
121                     + identifier("Win32_DiskDrive", "TotalHeads");
122         }
123
124         //Motherboard ID
125         private static string baseId()
126         {
127             return identifier("Win32_BaseBoard", "Model")
128                     + identifier("Win32_BaseBoard", "Manufacturer")
129                     + identifier("Win32_BaseBoard", "Name")
130                     + identifier("Win32_BaseBoard", "SerialNumber");
131         }
132
133         //Primary video controller ID
134         private static string videoId()
135         {
136             return identifier("Win32_VideoController", "DriverVersion")
137                     + identifier("Win32_VideoController", "Name");
138         }
139
140         //First enabled network card ID
141         private static string macId()
142         {
143             return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled");
144         }
145
146         //Packs the string to 8 digits
147         private static string pack(string text)
148         {
149             string retVal;
150             int x = 0;
151             int y = 0;
152             foreach (char n in text)
153             {
154                 y++;
155                 x += (n*y);
156             }
157             retVal = x.ToString() + "00000000";
158
159             return retVal.Substring(0, 8);
160         }
161     }
162 }

转自:记住你 C#社区

时间: 2024-10-29 17:46:45

C#提供用户硬件唯一信息的辅助类 C#硬件信息查询类库的相关文章

MD5做为文件名。机器唯一码有电脑的CPU信息和MAC地址,这两个信息需要在linux或unix系统下才能获取吧。

可以采用机器(电脑)唯一码 + 上传IP + 当前时间戳 + GUID ( + 随机数),然后MD5做为文件名.机器唯一码有电脑的CPU信息和MAC地址,这两个信息需要在linux或unix系统下才能获取吧. //获取电脑的CPU信息function OnlyU(){        $a = '';        $b = array();        if(function_exists('exec')){                if(mailto:[email protected]

Linux--记录每个用户登录后的IP信息,还有其它的操作信息

#Linux--记录每个用户登录后的IP信息,还有其它的操作信息,追加 vim /etc/profile PS1="`whoami`@`hostname`:"'[$PWD]' (Linux系统提示符是用系统变量PS1来定义的) history (who -u am i 会显示系统中登陆进来的用户及登陆从哪个IP登陆进来的,这里后面过滤了就取值一个登陆进来的IP) USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 

YS web socket存在横向越权漏洞,当前用户可任意查看其他用户的报警信息,可导致敏感信息泄漏【高】

YS web socket存在横向越权漏洞,当前用户可任意查看其他用户的报警信息,可导致敏感信息泄漏[高] 问题描述:          YS使用定时轮询web socket的方式获取用户设备的报警信息(比如报警图片),在客户端向服务器发送轮询请求期间,若发生设备报警,则将报警信息将实时推送到客户端进行显示,但在此过程中,要查询的设备是通过和用户名绑定的,也就是说绑定指定的用户名,服务器就返回该用户对应的设备的报警信息,而不是当前登录用户的报警信息. 测试步骤: 1.  打开burp拦截代理,并

session的官方定义是:Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。 说白了session就是一种可以维持服务器端的数据存储技术。session主要有以下的这些特点: 1. session保存的位置是在服务器端 2. session一般来说是要配合cookie使用,如果是浏览器禁用了cookie功

session的官方定义是:Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息. 说白了session就是一种可以维持服务器端的数据存储技术.session主要有以下的这些特点: 1. session保存的位置是在服务器端 2. session一般来说是要配合cookie使用,如果是浏览器禁用了cookie功能,也就只能够使用URL重写来实现session存储的功能 3. 单纯的使用session来维持用户状态的话

全废话SQL Server统计信息(1)——统计信息简介

当心空无一物,它便无边无涯.树在.山在.大地在.岁月在.我在.你还要怎样更好的世界?--张晓风<我在> 为什么要写这个内容? 随着工作经历的积累,越来越感觉到,大量的关系型数据库的性能问题,其根源在于统计信息.这里说的是根源,其实很多时候大家觉得的那些什么索引失效等都只是表象.当然,不能一概而论,还有很多问题如配置问题.设计问题等等,甚至电源也会影响性能. 之所以得出这个结论,因为在常规的开发和部署过程中,一般企业级系统已经大量使用较为高级的磁盘阵列甚至企业级SSD,IO方面的问题已经很少,而

全废话SQL Server统计信息(2)——统计信息基础

接上文:http://blog.csdn.net/dba_huangzj/article/details/52835958 我想在大地上画满窗子,让全部习惯黑暗的眼睛都习惯光明--顾城<我是一个任性的孩子> 这一节主要介绍一些理论层面的东西,主要针对SQL Server,为后面的做铺垫.假设从实操层面考虑能够跳过,可是我强烈建议还是要找时间看一下这节.本节的内容例如以下: SQL Server统计信息 列级统计信息 统计信息与运行计划 统计信息与内存分配 开销预估模型 SQL Server统计

Android——硬件加速(Hardware Acceleration(硬件加速)

从Android3.0(API Level 11)开始,Android 2D渲染管道能够更好的支持硬件加速.硬件加速执行的所有的绘图操作都是使用GPU在View对象的画布上来进行的.因为启用硬件加速会增加资源的需求,因此这样的应用会占用更多的内存. 硬件加速在target api大于等于14的情况下,是默认开启的,但是我们也可以显示的开启硬件加速.如果应用程序只使用标准的View和Drawable,那么打开全局硬件加速不会导致任何不良的绘制影响.然而,由于硬件加速并不支持所有的2D图形绘制操作,

封装表单自定义错误信息。(阻止默认错误信息提示,添加自定义错误信息提示)

1 前台提交信息到后台,两种表单验证: 2 1,form 表单验证 3 2,ajax 无刷新页面提交 4 5 表单验证方法一般有: 6 1,浏览器端验证 7 2,服务器端验证 8 3,ajax验证 9 4,浏览器和服务器双重验证 10 11 html5表单新增类型: 12 email,url,number,range,data(date,month,week,time,datetime,datetime-local),search,color,tel等 13 ======== 14 重点:pat

python学习之路 员工信息表(使用文件存储信息)

这里我只实现了员工信息的查询功能,其它的增删改没有实现. 关于员工信息的画了一个简单的流程图 查询流程图 实现的思路: 1.我们得到要查询的语句先把这个语句做简单的处理得到我们想要的数据 condition = input(">>>:").lower().replace(' ', '') # 不区分大小写 "selectname,agewhereage>20" ret = condition.split('where') # ['select