Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. sponsors. rss.
 From: Anup Singh
  Where is Anup Singh?
 Delhi
 India
 Anup Singh
 To: rino tenorio
  Where is rino tenorio?
 pasig
 Philippines
 rino tenorio
 Tags
Subject: RE: how to read the harddisk serial
Thread ID: 197716 Message ID: 197742 # Views: 38 # Ratings: 0
Version: Visual FoxPro 5 Category: Linux and VFP
Date: Monday, October 06, 2008 9:27:12 AM         
   


> 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.com
Web:www.margcompusoft.com



COMPLETE THREAD
how to read the harddisk serial Posted by rino tenorio @ 10/6/2008 6:25:16 AM
RE: how to read the harddisk serial Posted by Anil Sharma @ 10/6/2008 6:34:47 AM
RE: how to read the harddisk serial Posted by rino tenorio @ 10/6/2008 7:09:32 AM
RE: how to read the harddisk serial Posted by rino tenorio @ 10/6/2008 7:09:33 AM
RE: how to read the harddisk serial Posted by Jun Tangunan @ 10/6/2008 7:18:46 AM
RE: how to read the harddisk serial Posted by Anil Sharma @ 10/6/2008 7:38:37 AM
RE: how to read the harddisk serial Posted by Anup Singh @ 10/6/2008 9:27:12 AM