十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Private Function 硬盘序列号() As String
桥西ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
Try
Dim myInfo As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 1\Target Id 0\Logical Unit Id 0")
硬盘序列号 = Trim(myInfo.GetValue("SerialNumber"))
Catch
Try
Dim myInfo As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 1\Target Id 0\Logical Unit Id 0")
硬盘序列号 = Trim(myInfo.GetValue("SerialNumber"))
Catch
硬盘序列号 = ""
End Try
End Try
End Function
试下,如果返回为空,则表示失败。
在本机win8win8.1有效,不过好像在有些机器上没用。
Function Comput()
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" strComputer "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard", , 48)
For Each objItem In colItems
Debug.Print "Caption: " objItem.Caption
Debug.Print "ConfigOptions: " objItem.ConfigOptions
Debug.Print "CreationClassName: " objItem.CreationClassName
Debug.Print "Depth: " objItem.Depth
Debug.Print "Description: " objItem.Description
Debug.Print "Height: " objItem.Height
Debug.Print "HostingBoard: " objItem.HostingBoard
Debug.Print "HotSwappable: " objItem.HotSwappable
Debug.Print "InstallDate: " objItem.InstallDate
Debug.Print "Manufacturer: " objItem.Manufacturer
Debug.Print "Model: " objItem.Model
Debug.Print "Name: " objItem.Name
Debug.Print "OtherIdentifyingInf " objItem.OtherIdentifyingInfo
Debug.Print "PartNumber: " objItem.PartNumber
Debug.Print "PoweredOn: " objItem.PoweredOn
Debug.Print "Product: " objItem.Product
Debug.Print "Removable: " objItem.Removable
Debug.Print "Replaceable: " objItem.Replaceable
Debug.Print "RequirementsDescription: " objItem.RequirementsDescription
Debug.Print "RequiresDaughterBoard: " objItem.RequiresDaughterBoard
Debug.Print "SerialNumber: " objItem.SerialNumber
Debug.Print "SKU: " objItem.SKU
Debug.Print "SlotLayout: " objItem.SlotLayout
Debug.Print "SpecialRequirements: " objItem.SpecialRequirements
Debug.Print "Status: " objItem.Status
Debug.Print "Tag: " objItem.Tag
Debug.Print "Version: " objItem.Version
Debug.Print "Weight: " objItem.Weight
Debug.Print "Width: " objItem.Width
Debug.Print
Next
End Function
注意:SerialNumber 所在的行就是
strResult += 磁盘类型: System.Convert.ToInt16(disk(DriveType).ToString())End IfMsgBox(strResult)NextEnd Sub总结:在VB.NET中,用API函数可以获取硬盘信息。原来熟悉API函数VB6程序员,可以对API函数声明进行适当的更改后,进行调用。利用FSO(文件系统对象)的Scrrun.DLL,也可以获得磁盘信息。在.net Framwork中,利用WMI可以获取更多的关于机器硬件的详细信息(参考System.Management命名空间)。
上面的硬盘序列号都是逻辑盘序列号
每次格式化时都会改变而且很容易更改
你需要的应是物理序列号,是硬盘出厂时固化的
全球唯一的十位字符
网上有人编好的getdiskinfo
好像vsit不能用
或用WMI:Win32_PhysicalMedia
不过用在vsit里得出的是20位的16进制字符串
你要设法检测与转换
我现在是把多种方法组合起来用
WMI功能比较强但初始化比较慢
我还用汇编试过,快不过不太稳定
例程我就不提供了,自己去搜索一下。