Processor ID

Posted on 2005-05-16
Last Modified: 2012-05-05

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?

Question by:sporenza
    LVL 69

    Expert Comment

    LVL 1

    Expert Comment


    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: - 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...


    Author Comment

    We are using C++, explicitly VS 6.0
    LVL 1

    Accepted Solution

    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:
    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:
    "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 -

    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,

    LVL 1

    Expert Comment

    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.

    LVL 1

    Expert Comment

    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

    Scale it in WD Gold

    With up to ten times the workload capacity of desktop drives, WD Gold hard drives employ advanced technology to deliver among the best in reliability, capacity, power efficiency and performance.

    Join & Write a Comment

    The Rasberry PI is a low cost piece of hardware that you can have a lot of fun with through experimenting and building/working on projects like media players, running a low cost computer, build data loggers etc. - see:
    In the modern office, employees tend to move around the workplace a lot more freely. Conferences, collaborative groups, flexible seating and working from home require a new level of mobility. Technology has not only changed the behavior and the expe…
    Internet Business Fax to Email Made Easy - With eFax Corporate (, you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
    This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

    746 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    15 Experts available now in Live!

    Get 1:1 Help Now