Numero de Serie physique d'un disque dur

Signaler
Messages postés
19
Date d'inscription
lundi 24 avril 2006
Statut
Membre
Dernière intervention
3 mai 2012
-
Messages postés
1
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
9 janvier 2012
-
Mes Salutations.
Il existe des DLL (Ex:GetDiskSerial.dll, HardDiskId.dll ..etc) et des OCX ( SysIfo.ocx etc..) pour récupérer le N° de série du disque dur.
Je voudrais savoir s'il existe d'autres méthodes par programmation directe (VFP9) pour recuperer le N° de série permanent du disque dur .

Merci.

8 réponses

Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
Methode #1

LOCAL objWMI,colClass,objClass,strComputer
CREATE CURSOR PhysicalMedia (serialnumber c(100))
strComputer = "."
objWMI = GetObject("winmgmts:\" +strComputer + "\root\cimv2")
colClass = objWMI.ExecQuery("Select * from Win32_PhysicalMedia",,48)
For Each objClass in colClass
INSERT INTO PhysicalMedia (serialnumber) VALUES (objclass.serialnumber)
Next
BROWSE normal

Methode #2

drvPath="c:"
ofs=CreateObject('Scripting.FilesystemObject')
drv = ofs.GetDrive(ofs.GetDriveName(drvPath))
? drv.SerialNumber

Methode #3

CREAT TABLE TEMP FREE (COMPTE C(50))

IF !FILE("vol.GLL") && le fichier qui contient reception les information
RUN VOL C: > vol.GLL && obtenu a l'execution de la commande run
ELSE
APPEND FROM vol.GLL SDF
DELETE ALL FOR EMPTY(COMPTE) && ecraser l'enregistrement vierge
ENDIF

GO TOP
LVOLNAME = ALLTRIM(COMPTE) && linge nom du volume
SKIP
LVOLSERIAL = ALLTRIM(COMPTE) && ligne numero de serie
BROW
LSERIE_l = SUBSTR(LVOLSERIAL,RAT(LMOIN,LVOLSERIAL)-4) && localiser le numero de serie
WAIT WINDOW LSERIE_l && le numero serie obtenu en hexadecimal



Mike Gagnon
Messages postés
19
Date d'inscription
lundi 24 avril 2006
Statut
Membre
Dernière intervention
3 mai 2012
1
Merci Beaucoup pour votre réponse Mike
Quand j'exécute votre Méthode #1 je reçoit ce message d'erreur : "Field SERIALNUMBER does not accept null values".

Pour les Méthode #2 et #3, elles ne donnent que le numero de serie SOFT ( qui change après formatage ).

Merci encore une fois Mike.
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
Change cette ligne

CREATE CURSOR PhysicalMedia (serialnumber c(100) )
pour
CREATE CURSOR PhysicalMedia (serialnumber c(100) NULL)

Mike Gagnon
Messages postés
19
Date d'inscription
lundi 24 avril 2006
Statut
Membre
Dernière intervention
3 mai 2012
1
Bonjour Mike
J'ai changé la ligne comme vous me l'avez demandé mais en BROWSant le cursor il ne contient que la la valeur NULL ( il n'ya pas de N° serie)
pourtant ça marche trés bien avec Getdiskserial.dll.
Merci
Messages postés
19
Date d'inscription
lundi 24 avril 2006
Statut
Membre
Dernière intervention
3 mai 2012
1
Apparemment Personne n'a une idée sur la manière dont on peut obtenir le numero de serie physique d'un disque dur.
J'ai obtenu une nouvelle DLL ( HardDriveInfo.dll avec sa clé d'utilisation )
et je n'arrive pas à l'utiliser avec VFP.
j'ai besoin d'un exemple pour VFP.
Sur le site ( www.diskserialnumber.com ) il n'existe qu'un seul exemple pour Visuel Basic.
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
Quelle version de Windows utilises-tu? Avec Vista et Windows 7,Windows reconnait les disques durs comme des VDH (Virtual Hard Drive) et ce VDH ne contient plus le numéro de série du disque dur lui-meme.
Si tu veux un numéro de série encore disponible dans ces Version de Windows, tu pourrais aller chercher le numéro de série de la carte maitresse, ou du Bios.
____Carte Maitresse
LOCAL lcComputerName, loWMIService, loItems, loItem, lcMID
lcComputerName = "."
loWMIService = GETOBJECT("winmgmts:\" + lcComputerName + "\root\cimv2")
loItems = loWMIService.ExecQuery("Select * from Win32_BaseBoard")
FOR EACH loItem IN loItems
WITH loItem
MESSAGEBOX("Motherboard Product: " + TRANSFORM(.Product ))
MESSAGEBOX("Serial # :" + TRANSFORM(.SerialNumber))
ENDWITH
endfor
____Bios
clear
lcComputer = "."
loWMIService = Getobject("winmgmts:" ;
+ "{impersonationLevel=impersonate}!\" + lcComputer + "\root\cimv2")
colBIOS = loWMIService.ExecQuery ;
("Select * from Win32_BIOS")
For Each loBIOS In colBIOS
?"Build Number: " + loBIOS.BuildNumber
?"Current Language: " + loBIOS.CurrentLanguage
?"Installable Languages: " + TRANSFORM(loBIOS.InstallableLanguages)
?"Manufacturer: " + loBIOS.Manufacturer
?"Name: " + loBIOS.Name
?"Primary BIOS: " + TRANSFORM(loBIOS.PrimaryBIOS)
?"Release Date: " + TRANSFORM(loBIOS.ReleaseDate)
?"Serial Number: " + loBIOS.SerialNumber
?"SMBIOS Version: " + loBIOS.SMBIOSBIOSVersion
?"SMBIOS Major Version: " + transf(loBIOS.SMBIOSMajorVersion)
?"SMBIOS Minor Version: " + TRANSFORM((loBIOS.SMBIOSMinorVersion))
?"SMBIOS Present: " + TRANSFORM(loBIOS.SMBIOSPresent)
?"Status: " + loBIOS.Status
?"Version: " + loBIOS.Version
Next



Mike Gagnon
Messages postés
19
Date d'inscription
lundi 24 avril 2006
Statut
Membre
Dernière intervention
3 mai 2012
1
Pour la ____Carte Maitresse ça ne marche pas , je ne sais pas pourquoi , pourtant j'utilise Windows XPSP2 et aussi Windows XPSP2 avec VFP9.
Je reçois les messages : MotherBoard Product : Nettiling
: Serial# : Base board serialnumber

Pour le____Bios , ça a marché en recevant les valeurs suivantes :
.NULL.
.NULL.
Installable Languages:.NULL.
Manufacturer : Acer
Name : Deafault System Bios
Primary Bios : .T.
Release Date : 2007080900000.00000+000
Serial Number: LXALA0X0A7370A3581601
SMBIOS Version: V1.14
SMBIOS Major Version : 2
SMBIOS Minor Version : 4
SMBIOS Present : .T.
STATUT : .T.
Version :ACRSYS -1

Merci Mike
Messages postés
1
Date d'inscription
samedi 7 janvier 2012
Statut
Membre
Dernière intervention
9 janvier 2012

bonjour
est ce possible de changer le numero de serie du disque dur physique, celui qui est inscrit sur le disque dur lui meme
Merci