Click here to Skip to main content
15,867,308 members
Articles / Programming Languages / C++

Get the PIII processor serial number (psn) in Intel format

Rate me:
Please Sign up or sign in to vote.
2.49/5 (23 votes)
6 Mar 2004GPL3 128.6K   2K   15   26
How to get the PIII processor serial number (psn) in Intel format

Sample Image - maximum width is 600 pixels

Introduction

Many programmers always ask how to make their program run on a single computer. This code is one way for that and it gets the serial number in Intel format.

Background

To understand the code you need to know some assembly and the cpuid instruction and how it works. You can get more information from www.intel.com

Using the code

To use the code simply paste this function to your class dialog

/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
this code is written by:
Programmer:haitham hamed housin
description: get the PIII processor serial number (psn) like intel format
USE:to restrict your programs to run on single computer
classification: security 
demand: i need information about P4 PSN i can't belive that they ignore it

need more information contact me 

e-mail: haitham_hamed@yahoo.com
icq#148814438

or 
get the PIII PSN .pdf file for more understanding from intel

www.intel.com
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
void CPiiisnDlg::GetProcessorSeialNumbet(bool withSeparator)
{
DWORD  t,m,b; //top,middle,botttom
DWORD* serial;
  _asm
  {
    mov   eax,1 //programmer: I need a Service ?
         //processor: what type baby?
      //eax = 3 --> 
       //eax: top 32 bits are the processor signature bits
         

       //programmer:this
    cpuid     //_emit 0x0f |cpuid mean this tow instruction
          //_emit 0xa2 |instead of writing them 
       //       
    //mean:the sevice i want the processor serial number

 mov   t,eax // top 32 bits are the processor signature bits
           /* 
          eax = 3 --> 
        ecx: middle 32 bits are the processor signature bits
         edx: bottom 32 bits are the processor signature bits
      */
    mov   eax,3
    cpuid
    mov   m,edx// middle 32 bits are the processor signature bits
    mov   b,ecx// bottom 32 bits are the processor signature bits
  }

  // copy the locals into the pointer variables passed in
  serial[0] = b;
  serial[1] = m;
  serial[2] = t;


CString temp;
m_SN.Empty();
static char hex_chars[16] = {'0','1','2','3','4','5','6','7',
                 '8','9','A','B','C','D','E','F'};
for (int dw_count = 2; dw_count>=0; dw_count--)
  {
    for (int bp=28; bp>=0; bp-=4)
    {
      DWORD nibble = (serial[dw_count] >> bp) & 0x0f;
      temp.Format("%c", hex_chars[nibble]);
   m_SN+=temp;
      if ((bp == 16) || ((bp == 0) && (dw_count!=0)) )
    if(withSeparator)m_SN+="-";
    }
  }
UpdateData(FALSE);
}

Points of Interest

I can't believe that P4 has no sn and if any one knows any thing on that please contact me.

History

  • 3-5-2004 first version

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Software Developer (Senior)
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralThanks ! Pin
ETA8-Jul-07 21:14
ETA8-Jul-07 21:14 
Generalprocessor serial number is not supported for P4 Pin
laoda laoda4-Oct-06 22:50
laoda laoda4-Oct-06 22:50 
GeneralPlay Nice Pin
Polymorpher8-Jun-06 15:45
Polymorpher8-Jun-06 15:45 
JokeRe: Play Nice Pin
Haitham Khedre11-Jun-06 21:47
Haitham Khedre11-Jun-06 21:47 
GeneralRe: Play Nice Pin
Polymorpher12-Jun-06 2:45
Polymorpher12-Jun-06 2:45 
Generalp4... Pin
toxcct9-Feb-06 2:07
toxcct9-Feb-06 2:07 
GeneralRe: p4... Pin
Haitham Khedre9-Feb-06 3:09
Haitham Khedre9-Feb-06 3:09 
GeneralRe: p4... Pin
toxcct9-Feb-06 3:14
toxcct9-Feb-06 3:14 
GeneralRe: p4... Pin
Haitham Khedre9-Feb-06 3:33
Haitham Khedre9-Feb-06 3:33 
GeneralP4 doesn't support serial number Pin
michalvalny6-May-05 15:27
michalvalny6-May-05 15:27 
Questionget the p4 processor serial nuber? Pin
younghoyu10-Jun-04 16:58
younghoyu10-Jun-04 16:58 
GeneralCode Pin
renato tome12-Mar-04 21:24
renato tome12-Mar-04 21:24 
GeneralRe: Code Pin
Haitham Khedre17-Mar-04 19:49
Haitham Khedre17-Mar-04 19:49 
GeneralGurkan is a programmer Pin
Haitham Khedre10-Mar-04 10:30
Haitham Khedre10-Mar-04 10:30 
GeneralFor Programmers Only Pin
Haitham Khedre10-Mar-04 10:18
Haitham Khedre10-Mar-04 10:18 
Programmers Only Comment to Help they have open mind
they just want all to know and learn but not to
make the other listen to some stupit questions

please for all don't be like the technichal

thanxz

wait for a big things from me

i belive in KISS
KEEP IT SIMPLE STUPIT
GeneralGetProcessorSeialNumbet() Pin
David Crow9-Mar-04 2:06
David Crow9-Mar-04 2:06 
GeneralRe: GetProcessorSeialNumbet() Pin
Haitham Khedre10-Mar-04 10:07
Haitham Khedre10-Mar-04 10:07 
GeneralRe: GetProcessorSeialNumbet() Pin
David Crow11-Mar-04 3:39
David Crow11-Mar-04 3:39 
GeneralI'm puzzle Pin
superxsc19-Aug-04 16:37
superxsc19-Aug-04 16:37 
GeneralNot a lot of point, unfortunately... Pin
Julian Nicholls9-Mar-04 0:25
Julian Nicholls9-Mar-04 0:25 
GeneralRe: Not a lot of point, unfortunately... Pin
Haitham Khedre10-Mar-04 10:27
Haitham Khedre10-Mar-04 10:27 
GeneralRe: Not a lot of point, unfortunately... Pin
Julian Nicholls10-Mar-04 21:47
Julian Nicholls10-Mar-04 21:47 
GeneralRe: Not a lot of point, unfortunately... Pin
Haitham Khedre12-Mar-04 2:02
Haitham Khedre12-Mar-04 2:02 
Generalcrashing Pin
Atif Mushtaq7-Mar-04 23:35
Atif Mushtaq7-Mar-04 23:35 
GeneralRe: crashing Pin
Gurkan8-Mar-04 1:36
Gurkan8-Mar-04 1:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.