• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 416
  • Last Modified:

Processor ID


I thinking of using a user's processor ID for licensing instead of MAC Address that we currently use.  Can any one lead me to some info on this?

  • 4
1 Solution

I assume you are using this for licensing software you are writing yourself... in which case it would help to know what language you're writing it in!

Although this is above my current programming level of expertise, I've been digging around seeing if I can find anything useful on the subject - it interests me! I've found the following:

http://www.codeguru.com/Cpp/W-P/system/hardwareinformation/article.php/c9087/ - this doesn't mention the Processor Serial Number itself, but provides several ways of interrogating CPU information, which may be of use



This is a delphi-based semi-solution for interrogating CPUID (and I'm afraid I've never used Delphi...), but it does mention the following:

     CPUSerialNo: TCPUSerialNo
     TCPUSerialNo = Class(TPersistent)
       published members: properties:

         property PentiumIII:Boolean, Read-only
           Indicating support for Processor Serial Number Feature.

         PSN_ax:Integer, Read-only
         PSN_Hi:Integer, Read-only
         PSN_Lo:Integer, Read-only
         PSN_String:String, Read-only
           CPU's Processor Serial Number (if PSN is enabled).

Perhaps someone with experience in Delphi might be able to expand upon that, and the original document?

I'm rather dissatisfied with my search so far, so I'll keep looking...

sporenzaAuthor Commented:
We are using C++, explicitly VS 6.0
Who's Defending Your Organization from Threats?

Protecting against advanced threats requires an IT dream team – a well-oiled machine of people and solutions working together to defend your organization. Download our resource kit today to learn more about the tools you need to build you IT Dream Team!

Hmh...  I am coming to the conclusion, based on what I've read, that this is a line of enquiry which might not go much further, and in the end won't be worth it for you trying to implement licensing. This is for a couple of reasons.

Firstly, the unique ID can be set to "visible" or "invisible", as this Intel documentation states: http://support.intel.com/support/processors/pentiumiii/sb/CS-007580.htm
I believe (from memory, though I am trying to find a link to confirm this) that the visibility is set to "off" by default. To enable it to be set to "visible" involves an explicit user choice, and will require a restart. This will severly limit your market for the programme, if it cannot install without requiring the user to be an active participant in giving away what they will regard as their "private" information (through the BIOS or an Intel control utility).

Secondly, and this is the real killer, it appears that Intel introduced the unique ID on PIII processors, but dropped it from all subsequent processors... presumably due to the bad press it got at the time.

From the Intel website, about the P4: http://www.intel.com/support/processors/pentium4/sb/cs-001641-prd483.htm
"Only the Pentium® III Xeon™, Mobile Pentium® III and Pentium III processors support the processor serial number feature introduced by the Pentium® III processor. No other Intel® processor supports the processor serial number feature."

The result of this, is that your market will be decimated. I don't know how many people are still using PIIIs, and I am sure there are a sizeable number (I am on one of my old servers). However, I would imagine a majority are not; we now have the P4, P4EE, P4-Xeon, P4-64, Pentium M - and that's just from Intel. When you look at the number of people using AMD, it gets even worse: original Athlon (which came out at the same time as the P3, so I imagine the user-base would be equally small by now), Duron, Athlon-Thunderbird, Athlon XP, Athlon-64, Mobile Athlon, Athlon MP, Opteron, and so on.

I think, guesstimating from the number of PCs that I see on a daily basis in a Uni hall of residence (including those who have comparatively "old" computers), you might have a possible 2-5% of the market with Pentium IIIs. Certainly, no more than 10%.

In short - can you afford to alienate 90% of the market?

Here is some assembler code to find the PIII number, if you still want to go ahead with it - http://www.codeproject.com/system/PIIISN.asp

I am afraid my assembler and C++ skills aren't enough to directly apply it, but I imagine there is a fairly easy way of writing "assembler" within a C++ function to execute it *as* assembler (much like, in HTML, you can use "<pre></pre>" tags to include preformatted text)

Hope this is of some help,

In fact, looking at that example, it appears to be in C++ anyhow, using



with the assembler code between the brackets. Sorry, I was being a bit dim! So there you have a method of getting the ID, from a PII at any rate. I can't verify it works (no C++ compiler), and I imagine it'd probably crash or cause some exception/error if you tried it on a non-PIII processor...

Plus the "big one", that most processors now are not PIIIs anyhow, as I said before.

Thanks for the points - and sorry I couldn't be of much more help. I think MAC address might be the only way you can go on this. I know that the Windows Product Activation service uses more than just a MAC address, so perhaps other hardware items might have unique IDs which you could combine with a MAC address?

The downside of this, of course, is that for those of us (and I include myself, when I have cash!) who muck around with their computers on a frequent basis, swapping bits between PCs and adding new bits, such a system can cause a problem if it is not properly implemented - having to re-register a product because they've swapped a graphics card could be a bit galling!

Thanks again,


Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now