[H.S.] Différence dans les clés de registre entre XP et Vista

Le
Pascal F
Bonjour,
Pour des contrôles sur mes programmes, je récupère le numéro de série du fabricant du disque dur avec la clé:
RegistreLit("HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum","0")
la clé existe aussi sous Vista, si ce n'est que les différents disques ne sont pas dans le même ordre, sous XP ils sont dans
l'ordre défini dans le bios, sous Vista dans l'ordre IDE puis SATA. Ca ce n'est pas trop un problème,
par contre la manière dont le numéro de fabricant du disque est stocké n'est pas du tout identique.
Exemple sous XP je vais avoir:
IDEDiskMaxtor_6V200E0__________________________VA111630345642304c344738202020202020202020202020
et sous Vista
IDEDiskMaxtor_6V200E0__________________________VA111630\5&9076ea9&0&0.1.0

Comment retrouver une valeur identique dans les deux cas puisque sous XP c'est bien le numéro en Hexa, sous Vista????

Des idées?? merci

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #14656301
Pascal F a écrit :
Bonjour,
Pour des contrôles sur mes programmes, je récupère le numéro de série du
fabricant du disque dur avec la clé:
RegistreLit("HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum","0")

la clé existe aussi sous Vista, si ce n'est que les différents disques
ne sont pas dans le même ordre, sous XP ils sont dans l'ordre défini
dans le bios, sous Vista dans l'ordre IDE puis SATA. Ca ce n'est pas
trop un problème,
par contre la manière dont le numéro de fabricant du disque est stocké
n'est pas du tout identique.
Exemple sous XP je vais avoir:
IDEDiskMaxtor_6V200E0__________________________VA111630345642304c344738202020202020202020202020

et sous Vista
IDEDiskMaxtor_6V200E0__________________________VA111630\5&9076ea9&0&0.1.0

Comment retrouver une valeur identique dans les deux cas puisque sous XP
c'est bien le numéro en Hexa, sous Vista????

Des idées?? merci





Sous XP pro pour les disques j'ai un format comme celui qui tu indiques
sous Vista.

Si tu vas dans le gestionnaire de périphérique, et sur le disque dans
propriétés détails tu as ce même numéro qui correspond au numéro
d'identification d'instance du périphérique cf

http://www.hotline-pc.org/gestionnairedeperipheriques.htm


Si tu veux le numéro de série du disque voici le code (qui vient de
Beaussier)

// Obtenir le numéro de série du disque
lpRootPathName est une chaîne ASCIIZ sur 255
lpVolumeNameBuffer est une chaîne ASCIIZ sur 100
nVolumeNameSize est un entier
lpVolumeSerialNumber est un entier long
lpFileSysNameBuf est une chaîne ASCIIZ sur 255
nFileSystemNameSize est un entier long
RetVal est un entier long
NumSerie est une chaîne

lpRootPathName = "c:"
nVolumeNameSize = 100
nFileSystemNameSize = 100
// Ce code vous est offert par Beaussier en ligne

RetVal = AppelDLL32("kernel32", "GetVolumeInformationA", ...
&lpRootPathName, &lpVolumeNameBuffer, nVolumeNameSize, ...
&lpVolumeSerialNumber, 0, 0, &lpFileSysNameBuf, nFileSystemNameSize)

//Conversion de la valeur hexadecimale
NumSerie = Gauche(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)+...
":" + Droite(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)

Info(NumSerie)

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Pascal F
Le #14656291
Daniel avait énoncé :
Pascal F a écrit :
Bonjour,
Pour des contrôles sur mes programmes, je récupère le numéro de série du fabricant du disque dur avec la clé:
RegistreLit("HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum","0")

la clé existe aussi sous Vista, si ce n'est que les différents disques ne sont pas dans le même ordre, sous XP ils sont dans
l'ordre défini dans le bios, sous Vista dans l'ordre IDE puis SATA. Ca ce n'est pas trop un problème,
par contre la manière dont le numéro de fabricant du disque est stocké n'est pas du tout identique.
Exemple sous XP je vais avoir:
IDEDiskMaxtor_6V200E0__________________________VA111630345642304c344738202020202020202020202020

et sous Vista
IDEDiskMaxtor_6V200E0__________________________VA111630\5&9076ea9&0&0.1.0

Comment retrouver une valeur identique dans les deux cas puisque sous XP c'est bien le numéro en Hexa, sous Vista????

Des idées?? merci





Sous XP pro pour les disques j'ai un format comme celui qui tu indiques sous Vista.

Si tu vas dans le gestionnaire de périphérique, et sur le disque dans propriétés détails tu as ce même numéro qui correspond au
numéro d'identification d'instance du périphérique cf

http://www.hotline-pc.org/gestionnairedeperipheriques.htm


Si tu veux le numéro de série du disque voici le code (qui vient de Beaussier)

// Obtenir le numéro de série du disque
lpRootPathName est une chaîne ASCIIZ sur 255
lpVolumeNameBuffer est une chaîne ASCIIZ sur 100
nVolumeNameSize est un entier
lpVolumeSerialNumber est un entier long
lpFileSysNameBuf est une chaîne ASCIIZ sur 255
nFileSystemNameSize est un entier long
RetVal est un entier long
NumSerie est une chaîne

lpRootPathName = "c:"
nVolumeNameSize = 100
nFileSystemNameSize = 100
// Ce code vous est offert par Beaussier en ligne

RetVal = AppelDLL32("kernel32", "GetVolumeInformationA", ...
&lpRootPathName, &lpVolumeNameBuffer, nVolumeNameSize, ...
&lpVolumeSerialNumber, 0, 0, &lpFileSysNameBuf, nFileSystemNameSize)

//Conversion de la valeur hexadecimale
NumSerie = Gauche(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)+...
":" + Droite(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)

Info(NumSerie)



Ok merci, je vais tester et vous tiens au courant.

--
Pascal

Ne garder que le prénom pour me joindre
Pascal F
Le #14656281
Daniel vient de nous annoncer :
Pascal F a écrit :
Bonjour,
Pour des contrôles sur mes programmes, je récupère le numéro de série du fabricant du disque dur avec la clé:
RegistreLit("HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum","0")

la clé existe aussi sous Vista, si ce n'est que les différents disques ne sont pas dans le même ordre, sous XP ils sont dans
l'ordre défini dans le bios, sous Vista dans l'ordre IDE puis SATA. Ca ce n'est pas trop un problème,
par contre la manière dont le numéro de fabricant du disque est stocké n'est pas du tout identique.
Exemple sous XP je vais avoir:
IDEDiskMaxtor_6V200E0__________________________VA111630345642304c344738202020202020202020202020

et sous Vista
IDEDiskMaxtor_6V200E0__________________________VA111630\5&9076ea9&0&0.1.0

Comment retrouver une valeur identique dans les deux cas puisque sous XP c'est bien le numéro en Hexa, sous Vista????

Des idées?? merci





Sous XP pro pour les disques j'ai un format comme celui qui tu indiques sous Vista.

Si tu vas dans le gestionnaire de périphérique, et sur le disque dans propriétés détails tu as ce même numéro qui correspond au
numéro d'identification d'instance du périphérique cf

http://www.hotline-pc.org/gestionnairedeperipheriques.htm


Si tu veux le numéro de série du disque voici le code (qui vient de Beaussier)

// Obtenir le numéro de série du disque
lpRootPathName est une chaîne ASCIIZ sur 255
lpVolumeNameBuffer est une chaîne ASCIIZ sur 100
nVolumeNameSize est un entier
lpVolumeSerialNumber est un entier long
lpFileSysNameBuf est une chaîne ASCIIZ sur 255
nFileSystemNameSize est un entier long
RetVal est un entier long
NumSerie est une chaîne

lpRootPathName = "c:"
nVolumeNameSize = 100
nFileSystemNameSize = 100
// Ce code vous est offert par Beaussier en ligne

RetVal = AppelDLL32("kernel32", "GetVolumeInformationA", ...
&lpRootPathName, &lpVolumeNameBuffer, nVolumeNameSize, ...
&lpVolumeSerialNumber, 0, 0, &lpFileSysNameBuf, nFileSystemNameSize)

//Conversion de la valeur hexadecimale
NumSerie = Gauche(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)+...
":" + Droite(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)

Info(NumSerie)



Ce code déjà me donne un nombre négatif dans lpVolumeSerialNumber ce qui fait un NumSerie=":", et apparemment, c'est le numéro de
volume logique et non le numéro constructeur du disque dur. Je continue à chercher.

--
Pascal

Ne garder que le prénom pour me joindre
Daniel
Le #14656271
Pascal F a écrit :
Daniel vient de nous annoncer :
Pascal F a écrit :
Bonjour,
Pour des contrôles sur mes programmes, je récupère le numéro de série
du fabricant du disque dur avec la clé:
RegistreLit("HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum","0")

la clé existe aussi sous Vista, si ce n'est que les différents
disques ne sont pas dans le même ordre, sous XP ils sont dans l'ordre
défini dans le bios, sous Vista dans l'ordre IDE puis SATA. Ca ce
n'est pas trop un problème,
par contre la manière dont le numéro de fabricant du disque est
stocké n'est pas du tout identique.
Exemple sous XP je vais avoir:
IDEDiskMaxtor_6V200E0__________________________VA111630345642304c344738202020202020202020202020

et sous Vista
IDEDiskMaxtor_6V200E0__________________________VA111630\5&9076ea9&0&0.1.0


Comment retrouver une valeur identique dans les deux cas puisque sous
XP c'est bien le numéro en Hexa, sous Vista????

Des idées?? merci





Sous XP pro pour les disques j'ai un format comme celui qui tu
indiques sous Vista.

Si tu vas dans le gestionnaire de périphérique, et sur le disque dans
propriétés détails tu as ce même numéro qui correspond au numéro
d'identification d'instance du périphérique cf

http://www.hotline-pc.org/gestionnairedeperipheriques.htm


Si tu veux le numéro de série du disque voici le code (qui vient de
Beaussier)

// Obtenir le numéro de série du disque
lpRootPathName est une chaîne ASCIIZ sur 255
lpVolumeNameBuffer est une chaîne ASCIIZ sur 100
nVolumeNameSize est un entier
lpVolumeSerialNumber est un entier long
lpFileSysNameBuf est une chaîne ASCIIZ sur 255
nFileSystemNameSize est un entier long
RetVal est un entier long
NumSerie est une chaîne

lpRootPathName = "c:"
nVolumeNameSize = 100
nFileSystemNameSize = 100
// Ce code vous est offert par Beaussier en ligne

RetVal = AppelDLL32("kernel32", "GetVolumeInformationA", ...
&lpRootPathName, &lpVolumeNameBuffer, nVolumeNameSize, ...
&lpVolumeSerialNumber, 0, 0, &lpFileSysNameBuf, nFileSystemNameSize)

//Conversion de la valeur hexadecimale
NumSerie = Gauche(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)+...
":" + Droite(NumériqueVersChaine(lpVolumeSerialNumber, "X"), 4)

Info(NumSerie)



Ce code déjà me donne un nombre négatif dans lpVolumeSerialNumber ce qui
fait un NumSerie=":", et apparemment, c'est le numéro de volume logique
et non le numéro constructeur du disque dur. Je continue à chercher.




Tu as raison c'est le numéro de série attribué par l'OS.

"This function returns the volume serial number that the operating
system assigns when a hard disk is formatted. To programmatically obtain
the hard disk's serial number that the manufacturer assigns, use the
Windows Management Instrumentation (WMI) Win32_PhysicalMedia property
SerialNumber."


le lien de Win32_PhysicalMedia
http://msdn2.microsoft.com/en-us/library/aa394346.aspx



--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Publicité
Poster une réponse
Anonyme