![]() |
General Reading »
Hardware & System »
General
Intermediate
License: The GNU General Public License (GPL)
Get the PIII processor serial number (psn) in Intel formatBy haitham hamed housinHow to get the PIII processor serial number (psn) in Intel format |
VC6, Windows, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

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.
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
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); }
I can't believe that P4 has no sn and if any one knows any thing on that please contact me.
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 6 Mar 2004 Editor: Nishant Sivakumar |
Copyright 2004 by haitham hamed housin Everything else Copyright © CodeProject, 1999-2009 Web20 | Advertise on the Code Project |