程序代码: | [ 复制代码到剪贴板 ] |
Imports System.Management
Public Class Form1
'获取硬盘ID
Public Function GetMainHardDiskId() As String
Dim Result As String = ""
Dim mClass As ManagementClass = New ManagementClass("Win32_PhysicalMedia")
Dim moCollection As ManagementObjectCollection = mClass.GetInstances()
For Each mObject As ManagementObject In moCollection
Result = mObject("SerialNumber").ToString
Next
Return Result
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'获取硬盘ID
MsgBox(GetMainHardDiskId())
End Sub
End Class
Public Class Form1
'获取硬盘ID
Public Function GetMainHardDiskId() As String
Dim Result As String = ""
Dim mClass As ManagementClass = New ManagementClass("Win32_PhysicalMedia")
Dim moCollection As ManagementObjectCollection = mClass.GetInstances()
For Each mObject As ManagementObject In moCollection
Result = mObject("SerialNumber").ToString
Next
Return Result
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'获取硬盘ID
MsgBox(GetMainHardDiskId())
End Sub
End Class
不仅可以获得硬盘ID还可以:
Capacity
Caption
CleanerMedia
CreationClassName
Description
HotSwappable
InstallDate
Manufacturer
MediaDescription
MediaType
Model
Name
OtherIdentifyingInfo
PartNumber
PoweredOn
Removable
Replaceable
SerialNumber
SKU
Status
Tag
Version
WriteProtectOn
Caption
CleanerMedia
CreationClassName
Description
HotSwappable
InstallDate
Manufacturer
MediaDescription
MediaType
Model
Name
OtherIdentifyingInfo
PartNumber
PoweredOn
Removable
Replaceable
SerialNumber
SKU
Status
Tag
Version
WriteProtectOn
以上各属性,不一定都能用上面的代码获得,可能要修改代码。
程序代码: |
'获取主板序列号
Public Function GetBIOSSerialNumbr() As String
Try
Dim searcher As New ManagementObjectSearcher("Select * From Win32_BIOS")
Dim sBIOSSerialNumber As String = ""
For Each mo As ManagementObject In searcher.[Get]()
sBIOSSerialNumber = mo("SerialNumber").ToString().Trim()
Next
Return sBIOSSerialNumber
Catch
Return ""
End Try
End Function
'获取CPU序列号
Public Function GetCPUSerialNumber() As String
Try
Dim searcher As New ManagementObjectSearcher("Select * From Win32_Processor")
Dim sCPUSerialNumber As String = ""
For Each mo As ManagementObject In searcher.[Get]()
sCPUSerialNumber = mo("ProcessorId").ToString().Trim()
Next
Return sCPUSerialNumber
Catch
Return ""
End Try
End Function
'获取硬盘序列号
Public Function GetHardDiskSerialNumber() As String
Try
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
Dim sHardDiskSerialNumber As String = ""
For Each mo As ManagementObject In searcher.[Get]()
sHardDiskSerialNumber = mo("SerialNumber").ToString().Trim()
Exit For
Next
Return sHardDiskSerialNumber
Catch
Return ""
End Try
End Function
'获取网卡地址
Public Function GetNetCardMACAddress() As String
Try
Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> ‘Microsoft‘))")
Dim NetCardMACAddress As String = ""
For Each mo As ManagementObject In searcher.[Get]()
NetCardMACAddress = mo("MACAddress").ToString().Trim()
Next
Return NetCardMACAddress
Catch
Return ""
End Try
End Function
c#获取电脑硬件信息参数说明( Win32_PhysicalMedia )
Caption 物理内存还虚拟内存
Description 描述和Caption一样
InstallDate 安装日期(无值)
Name 名字
Status 状态
CreationClassName 创建类名(就是更换这个类的名字)
Manufacturer 生产商
Model 型号
SKU SKU号
SerialNumber 编号
Tag 唯一标识符的物理存储器
Version 版本信息
PartNumber 零件编号
OtherIdentifyingInfo 其他识别信息
PoweredOn 是否接通电源
Removable 是否可拆卸
Replaceable 是否可更换
HotSwappable 是否支持热插拔
Capacity 获取内存容量(单位KB)
MediaType
MediaDescription
WriteProtectOn 写保护开
CleanerMedia
经验证:
1、使用wmi获取的cpuid并不是唯一的,同一种型号的cpu通过wmi获取是一样的,而且不会因系统的重装而改变
2、因为Win32_DiskDrive的“PNPDeviceID”,可以获取所有的驱动器的型号及相关参数,不同硬盘参数唯一,而且不会因系统重装而改变(此属性不能用于iis中的网页文件,应采用下面的)
Private Sub Command1_Click()
Text1.Text = GetHdId
End Sub
Function GetHdId()
Dim Hdid
WQL = "SELECT * FROM Win32_DiskDrive"
Set objinst = GetObject("winmgmts:").ExecQuery(WQL)
For Each obj In objinst
If IsNull(obj.DeviceID) Then
Hdid = "no disk "
Else
If Hdid <> "" Then
Hdid = Hdid + " 下一个:"
End If
Hdid = Hdid + CStr(obj.PNPDeviceID)
End If
Next
GetHdId = Hdid
End Function
3、Signature属性获得的值为一负数,经测试重装系统此参数保持不变,并且具有唯一性,此属性不能用于网页
https://blog.csdn.net/polloo2012/article/details/79408072
/// <summary>
/// 获取传感器ID(16位HASH代码)
/// </summary>
/// <returns></returns>
private static string GetSensorID()
{
string sensorID = string.Empty;
string basicID = GetCPUID() + GetMotherboardID() + GetPhysicalMemoryID();
System.Security.Cryptography.MD5CryptoServiceProvider mD5CryptoServiceProvider = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] hashedBuff = mD5CryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes(basicID));
for (int i = 4; i < 12; i++)
{
sensorID += hashedBuff[i].ToString("X2");
}
return sensorID;
}
/// <summary>
/// 获得cpu序列号
/// </summary>
/// <returns></returns>
private static string GetCPUID()
{
var myCpu = new ManagementClass("win32_Processor").GetInstances();
var serial = "";
foreach (ManagementObject cpu in myCpu)
{
var val = cpu.Properties["Processorid"].Value;
serial += val == null ? "" : val.ToString();
}
return serial;
}
/// <summary>
/// 获取主板序列号
/// </summary>
/// <returns></returns>
private static string GetMotherboardID()
{
var myMb = new ManagementClass("Win32_BaseBoard").GetInstances();
var serial = "";
foreach (ManagementObject mb in myMb)
{
var val = mb.Properties["SerialNumber"].Value;
serial += val == null ? "" : val.ToString();
}
return serial;
}
/// <summary>
/// 获取所有内存信息,参考 CPUID 软件
/// </summary>
/// <returns></returns>
private static string GetPhysicalMemoryID()
{
string memoryID = "";
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_PhysicalMemory");
foreach (var prop in mos.Get())
{
memoryID = memoryID + prop["PartNumber"].ToString().Trim() + prop["SerialNumber"].ToString().Trim();
}
return memoryID;
[本日志由 tiancao1001 于 2019-11-21 03:22 PM 编辑]
|
tiancao1001 于 2020-04-17 07:34 PM 发表评论:
判断是否是usb和IDE,用InterfaceType
tiancao1001 于 2019-11-20 09:56 PM 发表评论:
Availability --设备的状态。
BytesPerSector --在每个扇区的物理磁盘驱动器的字节数。
Capabilities --媒体访问设备的能力阵列。
CapabilityDescriptions --更详细的解释为任何在功能阵列表示的访问设备的功能的列表
Caption --对象的序列号
CompressionMethod --设备所使用的算法或工具,以支持压缩。
ConfigManagerErrorCode --Windows配置管理器错误代码。
ConfigManagerUserConfig --如果为True,该设备使用用户定义的配置。
CreationClassName --代表所在的类
DefaultBlockSize --此设备默认块大小,以字节为单位。
Description --描述
DeviceID --磁盘驱动器与系统中的其他设备的唯一标识符
ErrorCleared --如果为True,报告LastErrorCode错误现已清除。
ErrorDescription --关于可能采取的纠正措施记录在LastErrorCode错误,和信息的详细信息。
ErrorMethodology --误差检测和校正的类型被此设备支持。
FirmwareRevision --修订制造商分配的磁盘驱动器固件。
Index --给定的驱动器的物理驱动器号。此属性由GetDriveMapInfo方法填补。 0xFF的值表示给定的驱动器不映射到物理驱动器。
InstallDate --日期和时间对象安装。此属性不需要的值以表示已安装的对象。
InterfaceType --物理磁盘驱动器的类型 (IDE、sata)
LastErrorCode --报告的逻辑设备上一个错误代码。
Manufacturer --制造商名称
MaxBlockSize --最大块的大小,以字节为单位,通过该设备访问的媒体。
MaxMediaSize --最大介质尺寸的介质,以KB为单位,由该设备支持。
MediaLoaded --如果真,媒体为一磁盘驱动器加载,这意味着该设备具有一个可读的文件系统和可访问。对于固定磁盘驱动器,该属性将始终为TRUE。
MediaType --由该设备使用或访问的媒体类型。
MinBlockSize --最小的块大小,以字节为单位,通过该设备访问的媒体。
Model --磁盘驱动器的制造商的型号。
Name --名字
NeedsCleaning --如果真,媒体接入设备需要清洁。不论手动或自动清洗是可能显示在Capabilities属性。
NumberOfMediaSupported --可被支持的或插入的介质最大数量
Partitions --此物理磁盘驱动器上的分区是由操作系统识别的数目。
PNPDeviceID --即插即用逻辑设备的播放设备标识符。
PowerManagementCapabilities --逻辑设备的特定功率相关的能力阵列。
PowerManagementSupported --如果为True,该设备可以是电源管理
SCSIBus --盘驱动器的SCSI总线号。
SCSILogicalUnit --SCSI逻辑单元的磁盘驱动器的号码(LUN)。
SCSIPort --盘驱动器的SCSI端口号。
SCSITargetId --SCSI标识符号码的磁盘驱动器的。
SectorsPerTrack --在每个轨道此物理磁盘驱动器扇区数。
SerialNumber --由制造商分配的号来识别物理介质。
Signature --磁盘识别。该属性可以被用于识别一个共享资源。
Size --磁盘大小
Status --对象的当前状态。
StatusInfo --逻辑设备的状态
SystemCreationClassName --该作用域计算机的CreationClassName属性的值。
SystemName --系统名称
TotalCylinders --物理磁盘驱动器上柱面总数。该值可能不准确
TotalHeads --磁盘驱动器上磁头总数。该值可能不准确。
TotalSectors --物理磁盘驱动器上的扇区总数。该值可能不准确。
TotalTracks --物理磁盘驱动器上的曲目总数。该值可能不准确。
TracksPerCylinder --在物理磁盘驱动器上的每个柱面轨迹的数量。该值可能不准确。
发表评论 - 不要忘了输入验证码哦! |