【已解决】读取硬盘物理序列号的函数是什么啊?
本帖最后由 kood481748 于 2010-10-31 22:27 编辑请问各位大虾,读取硬盘物理序列号的函数是什么啊?还有读取CPU/主板/显卡以及各个硬件的物理序列号的函数都是什么啊?小弟我要做一个注册码程序。要通过硬件物理序列号来产生机器码。 获取硬盘串号代码如下,不知道合不合要求
#include <array.au3>
Local $Hard
$Hard=_wmi_Win32_PhysicalMedia()
_ArrayDisplay($Hard)
Func _wmi_Win32_PhysicalMedia()
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $colItems = ""
Local $strComputer = "localhost"
Local $Output=""
Local $OutArr,$k=1
Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMedia", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
$diskdrive=$objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
;$Output &= "Tag: " & $objItem.Tag & "|" & "SerialNumber: " & $objItem.SerialNumber & @CRLF
ReDim $OutArr[$k+1]
$OutArr[$k]=$objItem.Tag
$OutArr[$k]=$objItem.SerialNumber
$k+=1
Next
Endif
$k=1
If IsObj($diskdrive) Then
For $objItem In $diskdrive
;$Output&="Name:"&$objItem.Name&"|"&$objItem.caption &@CRLF
If $objItem.Name=$OutArr[$k] Then $OutArr[$k]=$objItem.caption
$k+=1
Next
EndIf
$OutArr=UBound($OutArr)-1
Return $OutArr
EndFunc _Winapi_GetDiskSerialNumber API和WMI都能实现哈 http://www.autoitx.com/forum.php?mod=viewthread&tid=9507&highlight=%D0%F2%C1%D0%BA%C5 楼上的兄弟,你发的链接我看不了,没有阅读权限啊 2楼的老师,我要的是读取硬盘物理序列号的函数,不是读取硬盘型号的函数。
您搞错了啊。
回复 7# kood481748
winxp sp3和WIN7下测试成功。VISTA下失败。 本帖最后由 netegg 于 2010-10-17 23:43 编辑
不知道你到底要的什么,你自己对比下哪个是型号,哪个是序列号,这和你前面的标签关系不大 序列号里能出ata device还有空格,没见过 回复 8# 3mile
使用了3mile老师的代码,结果如下:
图中,是160G硬盘 SATA接口,是80G硬盘 IDE接口,是2G的U盘
请问一下,图中红圈部分是什么东西啊,这不是硬盘序列号啊。 好像有个名叫getdisknum.au3的UDF,有在坛子里面看到过,貌似就是这种功能吧? 回复 12# kingfirekkk
好好学学再说,那个是获取硬盘数的 很高深的东西,看不懂,不过很多程序都可以访问硬盘的屋里序列号。 论坛中的。
#include "getdisknum.au3"
$DiskNum=_GetDiskNum(0);这个0是硬盘的序号。 有几个硬盘就是几减1。 比如,想获取第三个硬盘的硬盘号,则是_GetDiskNum(2)
msgbox(0,"",$DiskNum)
页:
[1]
2