C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)
2023-09-27 14:26:40 时间
在开发过程中,经常需要获取电脑的一些属性,如获取硬盘ID/CPU序列号/MAC地址作为来加密字符串。
1、硬盘
在我查看网上一些文档时,发现很多人对硬盘序列号很模糊~
什么叫硬盘序列号?指的是作为一个硬盘的标识;但是有时候发现,同事的电脑硬盘序列号有重复的。所以硬盘标识我们可以试试用ID,这个如何获取下面讲解。
我们可以运行DOS命令,或者查看注册表,查看硬盘的序列号。如图中所示:都是HGST HTS725050A7E630。
大部分情况下,大家都可以通过如下获取:
Dim key As RegistryKey = Registry.LocalMachine Dim subKey = key.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 0\Target Id 0\Logical Unit Id 0") Dim bbb = subKey.GetValue("Identifier")
也可以通过Wmi方式获取:
Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim diskId As String '数字ID Dim diskSerialNumber As String '这个我们暂且称其为序列号码 Dim diskModel As String '序列号 For Each cmicWmiObj As ManagementObject In cmicWmi.Get diskId = cmicWmiObj("signature") diskSerialNumber = cmicWmiObj("serialnumber") diskModel = cmicWmiObj("Model") Next
个人建议用Wmiy中的signature来作为ID,毕竟是数字,且不重复。
PS:顺带提一个硬盘的容量,通过属性size可以获取单个硬盘的大小,加起来的话就是电脑总容量了。
2、CPU序列号
Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor") Dim cpuId As String For Each WmiObj As ManagementObject In Wmi.Get cpuId = WmiObj("ProcessorId") Next
3、MAC地址和IP地址
1 public string GetMacAddress() 2 { 3 string macAddress = ""; 4 ManagementObjectSearcher query = new ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration"); 5 ManagementObjectCollection querylist = query.Get(); 6 foreach (var managementBaseObject in querylist) 7 { 8 if (managementBaseObject["IPEnabled"].ToString() == "True") 9 { 10 macAddress = managementBaseObject["MacAddress"].ToString(); 11 } 12 } 13 return macAddress; 14 } 15 string GetAddressIp() 16 { 17 string addressIp = string.Empty; 18 var ipHostEntry = Dns.GetHostEntry(Dns.GetHostName()); 19 foreach (IPAddress iPAddress in ipHostEntry.AddressList) 20 { 21 if (iPAddress.AddressFamily.ToString() == "InterNetwork") 22 { 23 addressIp = iPAddress.ToString(); 24 } 25 } 26 return addressIp; 27 }
4、电脑系统类型与物理内存
Dim pcType As String Dim pcMemory As String Dim mos As New ManagementObjectSearcher("select * from Win32_ComputerSystem") For Each mo As Object In mos.Get() pcType = mo("SystemType") pcMemory = mo("TotalPhysicalMemory") Next
系统类型,电脑的操作系统;物理内存,即是指运行内存。
比如我当前电脑配置是“x64-based PC”、“8272879616”-8G
5、其它
Dim userName = Environment.UserName--获取用户名 eg:Admin
Dim machineName = Environment.MachineName--获取电脑名称 eg:IBM777-PB4DVTY
相关文章
- C# .net WPF无边框移动窗体
- C#_单例模式
- C#_获取当前程序运行的环境变量
- c#里@的作用
- C#--MetroFramework框架调用metroModernUI库,并在工具栏使用
- C#.NET中对称和非对称加密、解密方法汇总--亲测可用
- C#程序员经常用到的10个实用代码片段
- C# OpenCV EmguCV LSD直线检测使用Demo
- C# implicit隐式转换
- C# 重置IE安全等级
- c#获取文件的扩展名
- C#获取本机串口参数(适合初学者参考)
- .NET(C#) Lambda 表达式
- .NET(C#) MD5(Message-Digest Algorithm 5)加密实现代码
- .NET Core(C#) Hangfire定时任务组件安装配置及使用(MySQL持久化)
- .NET Core(C#)使用ExcelReport(NPOI)生成Excel报表(多行重复生成)
- C#(.NET Core)使用泛型<T>实现类型数据缓存方法及示例代码
- .NET(C#) 操作windows剪粘板(粘贴板)读取设置文本和文件数据
- .Net(C#) 实现replace字符串替换只替换一次的方法
- .Net(C#) 对网页加载后解析后的内容截图或生成pdf文件的方法
- .NET(C#) Task RunSynchronously()和Start()的使用与区别
- C# 10 有哪些新变化?
- C# TimeSpan 时间计算
- C# 很少人知道的科技