田草博客
日志搜索


 标题   内容 评论


网友交流QQ群:11740834 需注明申请加入原因

微信 公众号:ByCAD

邮箱:tiancao1001x126.com
ByCAD,微信公众号
首页 | 普通 | 电脑 | AutoCAD | VB/VB.NET | FLash | 结构 | 建筑 | 电影 | BIM | 规范 | 软件
-电信用户-|-网通用户-
-博客论坛-|-软件下载-
-网站导航-|-规范下载-
-BelovedFLash欣赏-

用户登陆
用户:
密码:
 

站点日历
73 2020 - 6 48
 123456
78910111213
14151617181920
21222324252627
282930


站点统计

最新评论



.net中的WMI编程(一)WMI介绍及简单应用 AutoCAD2006 在Windows7上安装 要兼容 XP Sp3运行
未知 VB.Net 获取硬盘ID WMI System.Management   [ 日期:2013-01-15 ]   [ 来自:本站原创 ]  HTML
程序代码:[ 复制代码到剪贴板 ]
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


不仅可以获得硬盘ID还可以:


Capacity
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 发表评论: 
Win32_DiskDrive 硬盘 参数说明

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  --在物理磁盘驱动器上的每个柱面轨迹的数量。该值可能不准确。

发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证:  防止恶意留言请输入问题答案:3*5=?  
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字

字体样式 文字大小 文字颜色
插入粗体文本 插入斜体文本 插入下划线
左对齐 居中对齐 右对齐
插入超级链接 插入邮件地址 插入图像
插入 Flash 插入代码 插入引用
插入列表 插入音频文件 插入视频文件
插入缩进符合
点击下载按钮 下标 上标
水平线 简介分割标记
表  情
 
Tiancao Blog All Rights Reserved 田草博客 版权所有
Copyright ©