> Hi experts,
> how can we read the Hard disk serial of the PC?? Thanks
Try this code :
*** serial numbers in 8 chr
? "Mother Boad Serial Number : "+marghmu(1) &&MOTHER BOARD SERIAL NUMBER
? "Hard Disk Serial Number : "+marghmu(2) &&HARDDISK SERIAL NUMBER
? "MACK ID Serial Number : "+marghmu(3) &&MACK ID
? "USB Serial Number : "+marghmu(4) &&MACK ID
func marghmu
para marghmu
lcRetVal=""
margfirst="Y"
if marghmu=1
lcComputer = "."
loWMIService = Getobject("winmgmts:\\.\root\cimv2")
colItems = loWMIService.ExecQuery("Select * from Win32_BaseBoard")
for each loItem In colItems
if margfirst="Y"
lcRetVal=loItem.SerialNumber+loItem.Product+loItem.Manufacturer
lcRetVal=substr(alltrim(sys(2007,lcRetVal))+alltrim(sys(2007,substr(lcRetVal,1,10))),1,8)
if len(lcRetVal)#0 .and. len(lcRetVal)#8
if len(lcRetVal)<8
lcRetVal=substr(ltrim(lcRetVal)+sys(2007,lcRetVal),1,8)
else
lcRetVal=substr(ltrim(lcRetVal),1,8)
endif
endif
margfirst="N"
endif
next
else
if marghmu=2
oWMi = getobject("winmgmts://")
col = oWMI.ExecQuery("Select * from win32_diskdrive")
for each disk in col
if margfirst="Y"
PNPDedno=disk.PNPDeviceID
lcRetVal=disk.Size+disk.Model
do while at("20",PNPDedno)>0
PNPDedno=substr(PNPDedno,1,at("20",PNPDedno))+substr(PNPDedno,at("20",PNPDedno)+3,len(PNPDedno))
enddo
if at("\",PNPDedno)>0
PNPDedno=iif(at("\",PNPDedno)>0,substr(PNPDedno,rat("\",PNPDedno)+1,len(PNPDedno)),PNPDedno)+iif(at("\",PNPDedno)<10,substr(PNPDedno,1,at("\",PNPDedno)-1),"")
endif
lcRetVal=PNPDedno+lcRetVal
lcRetVal=substr(alltrim(sys(2007,lcRetVal))+alltrim(sys(2007,substr(lcRetVal,10,6))),1,8)
if len(lcRetVal)#0 .and. len(lcRetVal)#8
if len(lcRetVal)<8
lcRetVal=substr(ltrim(lcRetVal)+sys(2007,lcRetVal),1,8)
else
lcRetVal=substr(ltrim(lcRetVal),1,8)
endif
endif
margfirst="N"
endif
next
else
if marghmu=3
Local pGUID,rGUID,lcOldError, lnResult
Declare integer CoCreateGuid in 'OLE32.dll' string @pguid
Declare integer StringFromGUID2 in 'OLE32.dll' string rguid, string @lpsz, integer cchMax
Declare integer UuidCreateSequential in 'RPCRT4.dll' string @ Uuid
pGUID=replicate(chr(0),16)
rGUID=replicate(chr(0),80)
lcOldError = On('error')
On Error lnResult = CoCreateGuid(@pGUID)
lnResult = UuidCreateSequential(@pGUID)
On Error &lcOldError
lcRetVal = substr( iif( lnResult = 0 and ;
StringFromGUID2(pGUID,@rGUID,40) # 0, ;
StrConv(left(rGUID,76),6), "" ), 26,12)
lcRetVal=substr(alltrim(sys(2007,lcRetVal))+alltrim(sys(2007,substr(lcRetVal,2,6))),1,8)
if len(lcRetVal)#0 .and. len(lcRetVal)#8
if len(lcRetVal)<8
lcRetVal=substr(ltrim(lcRetVal)+sys(2007,lcRetVal),1,8)
else
lcRetVal=substr(ltrim(lcRetVal),1,8)
endif
endif
else
if marghmu=4
oWMi = getobject("winmgmts://")
col = oWMI.ExecQuery("Select * from win32_diskdrive")
for each disk in col
if margfirst="Y" .and. upper(disk.PNPDeviceID)="USBSTOR" .and.;
(upper(disk.Model)=CHR(75)+CHR(73)+CHR(78)+CHR(71)+CHR(83)+CHR(84)+CHR(79)+CHR(78);
.or. upper(disk.Model)=CHR(83)+CHR(79)+CHR(78)+CHR(89);
.or. upper(disk.Model)=CHR(74)+CHR(69)+CHR(84)+CHR(70)+CHR(76)+CHR(65)+CHR(83)+CHR(72);
.or. upper(disk.Model)=CHR(77)+CHR(79)+CHR(83)+CHR(69)+CHR(82)+CHR(66)+CHR(65)+CHR(69)+CHR(82);
.or. upper(disk.Model)=CHR(77)+CHR(79)+CHR(83)+CHR(69)+CHR(82)+CHR(32)+CHR(66)+CHR(65)+CHR(69)+CHR(82);
.or. upper(disk.Model)=CHR(84)+CHR(82)+CHR(65)+CHR(78)+CHR(83)+CHR(67)+CHR(69)+CHR(78)+CHR(68);
.or. upper(disk.Model)=CHR(83)+CHR(69)+CHR(65)+CHR(71)+CHR(65)+CHR(84)+CHR(69);
.or. upper(disk.Model)=CHR(83)+CHR(65)+CHR(78)+CHR(68)+CHR(73)+CHR(83)+CHR(75);
.or. upper(disk.Model)=CHR(84)+CHR(79)+CHR(83)+CHR(72)+CHR(73)+CHR(66)+CHR(65))
*"KINGSTON,SONY,JETFLASH,MOSERBAER,MOSER BAER,TRANSCEND,SEAGATE,SANDISK,TOSHIBA"
PNPDedno=disk.PNPDeviceID
lcRetVal=disk.Size+disk.Model
do while at("20",PNPDedno)>0
PNPDedno=substr(PNPDedno,1,at("20",PNPDedno))+substr(PNPDedno,at("20",PNPDedno)+3,len(PNPDedno))
enddo
if at("\",PNPDedno)>0
PNPDedno=iif(at("\",PNPDedno)>0,substr(PNPDedno,rat("\",PNPDedno)+1,len(PNPDedno)),PNPDedno)+iif(at("\",PNPDedno)<10,substr(PNPDedno,1,at("\",PNPDedno)-1),"")
endif
lcRetVal=PNPDedno+lcRetVal
lcRetVal=substr(alltrim(sys(2007,lcRetVal))+alltrim(sys(2007,substr(lcRetVal,10,6))),1,8)
if len(lcRetVal)#0 .and. len(lcRetVal)#8
if len(lcRetVal)<8
lcRetVal=substr(ltrim(lcRetVal)+sys(2007,lcRetVal),1,8)
else
lcRetVal=substr(ltrim(lcRetVal),1,8)
endif
endif
margfirst="N"
endif
next
endif
endif
endif
endif
retu lcRetVal
With regard
Anup Singh
(M.D.)
MARG Compusoft Pvt. Ltd.Email:
anupmarg@gmail.comWeb:
www.margcompusoft.com