2

I developed a commercial software, with system to system licensing. For licensing purpose, I'm using various parameters like CPU info, hard disk info, BIOS, and other stuff.

The problem is the license keeps expiring due to change in these properties. Clients keep calling me saying their license isn't working.

I've changed the licensing to use just:

  • Processor ID
  • CPU Name
  • CPU NumberOfCores
  • CPU NumberOfLogicalProcessors
  • Architecture

Do any of these properties change after a fresh windows install?

I don't want a server side serial key validation since most of these systems don't have internet connection

4
  • not sure, but the defintely do when your computer breaks and you upgrade
    – Ewan
    Commented Apr 3, 2019 at 14:04
  • Why is this important? Most users don't reinstall their OS on the same machine repeatedly. Most Windows users don't even install their OS by themselves, today they usually buy a machine with the OS preinstalled. When one of the above parameters has changed, it is likely the hardware was changed. If you want to stop users from calling you because they changed their machine, you need to provide a hardware license key for them they can plug into their USB port.
    – Doc Brown
    Commented Apr 3, 2019 at 17:47
  • Hi doc, basically the software is installed in factories. Their systems keep crashing frequently due to power shortages, some application malfunction, etc, and the os gets corrupted. They have proper IT teams to rectify the system, install all the softwares. The hardware dongle would work, but it would not be feasible to always send it to clients who are living abroad
    – mrid
    Commented Apr 3, 2019 at 18:33
  • 1
    Why don't you put the above parameters (and maybe others) into a log file in case of a failed license identification? So when a client asks you about the malfunction, you ask them to send you the log first by mail? Then you can actually see what's happening there.
    – Doc Brown
    Commented Apr 3, 2019 at 19:40

2 Answers 2

2

None of the items you have listed are actually unique data. So whether or not they change after a fresh Windows install is, more or less, meaningless to your actual needs.

The one most likely to be unique is ProcessorID, but even that has no guarantee of being unique: https://stackoverflow.com/questions/1101772/win32-processoris-processorid-unique-for-all-computers

Because this information is not unique, it is not appropriate for use for license validation.

The other values are either consistent, or may be dependent on information provided by a driver (such as CPUName).

Your root problem is that you have failed to select appropriate things to base your license system on.

0

None of these would I consider valid if you want to do commercial licensing well:

  • Processor ID
  • CPU Name
  • CPU NumberOfCores
  • CPU NumberOfLogicalProcessors
  • Architecture

None are unique, but also all of them can change.

Do you allow VMs of any kind? If so, what happens if suddenly the machine needs 2 processors, physical or logical?

What if ESXi / VmWare / VB changes the processor name by accident, or WMI breaks / gets funky.

If the machines are offline, I'd probably elect for a key for the software, especially if it causes many support calls. Otherwise you might be "repairing " licenses and doing exactly what your faulty license model thinks it's stopping. Double whammy.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .