kood481748 发表于 2010-10-16 11:43:24

【已解决】读取硬盘物理序列号的函数是什么啊?

本帖最后由 kood481748 于 2010-10-31 22:27 编辑

请问各位大虾,读取硬盘物理序列号的函数是什么啊?还有读取CPU/主板/显卡以及各个硬件的物理序列号的函数都是什么啊?小弟我要做一个注册码程序。要通过硬件物理序列号来产生机器码。

3mile 发表于 2010-10-16 15:42:43

获取硬盘串号代码如下,不知道合不合要求
#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

netegg 发表于 2010-10-16 19:17:04

_Winapi_GetDiskSerialNumber

menfan1 发表于 2010-10-16 19:53:03

API和WMI都能实现哈

menfan1 发表于 2010-10-16 19:54:24

http://www.autoitx.com/forum.php?mod=viewthread&tid=9507&highlight=%D0%F2%C1%D0%BA%C5

kood481748 发表于 2010-10-16 23:02:06

楼上的兄弟,你发的链接我看不了,没有阅读权限啊

kood481748 发表于 2010-10-17 12:37:22

2楼的老师,我要的是读取硬盘物理序列号的函数,不是读取硬盘型号的函数。
您搞错了啊。

3mile 发表于 2010-10-17 23:11:13

回复 7# kood481748
winxp sp3和WIN7下测试成功。VISTA下失败。

netegg 发表于 2010-10-17 23:41:51

本帖最后由 netegg 于 2010-10-17 23:43 编辑

不知道你到底要的什么,你自己对比下哪个是型号,哪个是序列号,这和你前面的标签关系不大

netegg 发表于 2010-10-17 23:44:47

序列号里能出ata device还有空格,没见过

kood481748 发表于 2010-10-17 23:49:40

回复 8# 3mile
使用了3mile老师的代码,结果如下:

图中,是160G硬盘 SATA接口,是80G硬盘 IDE接口,是2G的U盘
请问一下,图中红圈部分是什么东西啊,这不是硬盘序列号啊。

kingfirekkk 发表于 2010-10-19 19:44:42

好像有个名叫getdisknum.au3的UDF,有在坛子里面看到过,貌似就是这种功能吧?

netegg 发表于 2010-10-19 19:56:44

回复 12# kingfirekkk

好好学学再说,那个是获取硬盘数的

smooth 发表于 2010-10-19 20:04:19

很高深的东西,看不懂,不过很多程序都可以访问硬盘的屋里序列号。

nbmpe 发表于 2010-10-20 10:37:01

论坛中的。
#include "getdisknum.au3"

$DiskNum=_GetDiskNum(0);这个0是硬盘的序号。 有几个硬盘就是几减1。 比如,想获取第三个硬盘的硬盘号,则是_GetDiskNum(2)
msgbox(0,"",$DiskNum)
页: [1] 2
查看完整版本: 【已解决】读取硬盘物理序列号的函数是什么啊?