salut !
savez-vous vomment recuperer le numero de serie d'un processeur ?
je crois savoir qu'il est unique, je me trompe ?
eh par la meme occasion, celui du HDD.
merci.
ps : je suis sous Win98 SE, il ny'a donc pas le HAL de XP qui me gene.
salut !
savez-vous vomment recuperer le numero de serie d'un processeur ?
je crois savoir qu'il est unique, je me trompe ?
eh par la meme occasion, celui du HDD.
merci.
ps : je suis sous Win98 SE, il ny'a donc pas le HAL de XP qui me gene.
OS : WinXP
Outils : VC++ 8 (Visual Studio 2005)
Bonjour,
Pour le numéro de série du processeur, je ne sais pas mais je vais chercher.
Pour le disque dur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 LPTSTR lpVolumeNameBuffer = new char[255]; // address of name of the volume DWORD nVolumeNameSize; // length of lpVolumeNameBuffer unsigned long lpVolumeSerialNumber; // address of volume serial number LPDWORD lpMaximumComponentLength; // address of system's maximum filename length LPDWORD lpFileSystemFlags; // address of file system flags LPTSTR lpFileSystemNameBuffer = new char[255]; // address of name of file system DWORD nFileSystemNameSize; // length of lpFileSystemNameBuffer memset(lpVolumeNameBuffer, 0x00, 255); memset(lpFileSystemNameBuffer, 0x00, 255); if (GetVolumeInformation( edRoot->Text.c_str(), lpVolumeNameBuffer, 255, &lpVolumeSerialNumber, 0, 0, lpFileSystemNameBuffer, 255 )) { laVolume->Caption = lpVolumeNameBuffer; laSerial->Caption = lpVolumeSerialNumber; laFileSy->Caption = lpFileSystemNameBuffer; } else { // GetLastError } delete [] lpVolumeNameBuffer; delete [] lpFileSystemNameBuffer;
A ta disposition
Christophe MERLIER
pour les processeurs le numéro de série est seulement imprimé dessu SAUF sur les premiers p II et sur certains cyrix...
pour savoir comment récupérer le numéro de série je pense qu'il faut aller voir sur intel.com
merci.
pour le proc, ca a l'air d'etre beaucoup plus difficile !
on m'a répondu sur le forum "Algorhytmes" ceci pour recuperer le SN d'un processeur Intel (jusqu'au PIII)
code pour le prog en ASM pour les 32Bits du SN
code pour le prog en ASM pour les 64Bits du SN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3mov EAX,01 CPUID
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3mov EAX,03 CPUID
OS : WinXP
Outils : VC++ 8 (Visual Studio 2005)
Bonjour,
Il semblerait que l'on puisse trouver des informations (vitesse, vendorid etc...) dans le registre :
HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0
J'ai aussi trouvé ceci :
DetectSerialNumber :
ReadSerialNumber :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 bool DetectSerialNumber() { bool found_sn; _asm { pushfd pop eax // get EFLAGS into eax mov ebx,eax // keep a copy xor eax,0x200000 // toggle CPUID bit push eax popfd // set new EFLAGS pushfd pop eax // EFLAGS back into eax // have we changed the ID bit? xor eax,ebx je NO_SERIAL_NUM // we could toggle the bit so CPUID // is present mov eax,1 cpuid // get processor features // check the serial number bit test edx,1<<18 jz NO_SERIAL_NUM mov found_sn,1 jmp DONE NO_SERIAL_NUM: mov found_sn,0 DONE: } return found_sn; }
Bon courage ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 void ReadSerialNumber(DWORD* serial) { DWORD t,m,b; _asm { mov eax,1 cpuid // top 32 bits are the processor // signature bits mov t,eax // A new CPUID code for the // Pentium III mov eax,3 cpuid mov m,edx mov b,ecx } // copy the locals into the pointer variables passed in serial[0] = b; serial[1] = m; serial[2] = t; }
A ta disposition
Christophe MERLIER
et c'est avec quel compilo que tu as ecris ce code ?
OS : WinXP
Outils : VC++ 8 (Visual Studio 2005)
Veux dire que ce n'est pas moi qui a écris ça ... pour etre franc je ne l'ai même pas compilé !Envoyé par ChMerlier
A ta disposition
Christophe MERLIER
euh oui ! les premiers pIII je voulais dire !
sorry....
Bonjour,
J'ai testé le code et ça marche.
Il faut cependant faire quelques petites modifs.
Premierement il faut activer la compilation en mode Pentium (Projet|Options|Options du compilateur avancées).
Ensuite il faut modifier une ligne que TAsm n'aime pas :
test edx,1<<18
par
test edx,0x40000
Je cherche des infos sur l'interpretation du numéro de série.
Pour le teste, j'ai créé une fiche avec un bouton et 3 Labels :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD wSerialNumber[3] = {0}; if (DetectSerialNumber() == true) { // test Label1->Caption = "DetectSerial Ok"; ReadSerialNumber(wSerialNumber); // affichage héxa Label2->Caption = Label2->Caption.sprintf("%X %X %X", wSerialNumber[0], wSerialNumber[1],wSerialNumber[2]); // affichage décimal Label3->Caption = Label3->Caption.sprintf("%ld %ld %ld", wSerialNumber[0], wSerialNumber[1],wSerialNumber[2]); } else { // pas de sérial ou désactivé Label1->Caption = "DetectSerial Non-Ok"; } }
A ta disposition
Christophe MERLIER
je vous remercie encore.
pour ma pars, j'ai un processeur AMD Athlon Thunderbird II (1,1GHz)
et ce code marche alors qu'il est destiné aux PIII !!??
Intel et AMD utiliseraient-ils le meme jeu d'instructions ?
mystere et boule de gomme
je suis allé sur le site de AMD et je n'ai rien trouvé pour les developpeur sauf de la pub du style "avec AMD,le developpement est plus facile"
ensuite, j'ai essyé le code pour le HDD, il marche mais j'ai une question :
const char *IpRootPathName, on met quoi dedans ? j'ai mis "C:" et les infos donné sont completements differentes !
au depart, j'ai mis ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 GetVolumeInformation( Form1->Text.c_str(), lpVolumeNameBuffer, 255, &lpVolumeSerialNumber, 0, 0, lpFileSystemNameBuffer, 255 ) ;
mais je n'ai pas le systeme de fichier ainsi que le nom de volume et donc j'en conclue, un serial eronné
OS : WinXP
Outils : VC++ 8 (Visual Studio 2005)
Bonjour,
J'ai investigué le serial du processeur et il se formate comme ça :
Ce qui donne pour moi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 DWORD wSerialNumber[3] = {0}; if (DetectSerialNumber() == true) { Label1->Caption = "DetectSerial Ok"; ReadSerialNumber(wSerialNumber); Label2->Caption = Label2->Caption.sprintf("%08X%08X%08X", wSerialNumber[2], wSerialNumber[1],wSerialNumber[0]); } else { Label1->Caption = "DetectSerial Non-Ok"; }
000006860001440879ACB5A7
un lien pour vérifier chez intel (un utilitaire à télécharger)
http://www.intel.com/francais/pentiumiii/utility.htm
A ta disposition
Christophe MERLIER
une petite question, ou trouve tu tout ca ?
sur le site de Intel ?
j'y suis allé et j'ai pas trouvé grand chose dessus...
le pire, comme je l'ai dit aussi précédemment, c'est que ces infos marche pour mon AMD...
OS : WinXP
Outils : VC++ 8 (Visual Studio 2005)
j'ai peut-etre parlé un peut trop vite :
mon numero (en hexa) est :
000006420000000000000000
un opeut simple pour un proc ?
OS : WinXP
Outils : VC++ 8 (Visual Studio 2005)
Pour moi y'a que les PIII et PIV qui ont leurs S/N intégré au CPU..pour ce qui est des AMD, il est seulement marqué sur le core du CPU et pour les Cyrix..bah ça on s'en fout, personne n'en a !
Voici une adresse ou tu peux télécharger le code source qui
permet de lire le numéro de série du processeur Intel Pentium III et
suivants.
J'ai réussi à le compiler avec C++ Builder 5.0 et le programme s'exécute.
Je ne peux pas te dire si la lecture du numéro est correcte car je ne
peux pas modifier l'option qui permet la lecture dans le BIOS et le programme le détecte.
Les sources se trouvent à l'adresse suivante:
http://codecentral.borland.com/codec...sting?id=15085
Si tu n'arrive pas à y accéder, envoie-moi un mail je t'envaierai le fichier.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager