2

I developed a software with C# which will be running in windows machines and I want to use something unique for licensing my software so I decided to the Processor ID of the computer but when I did some tests it turned out that lots of unbranded computers has the exact same Processor ID so I decided to use a combination of the following:

Processor ID - HDD Serial Number / model - Motherboard ID

but again it turned out that lots of unbranded computers has exact same Processor ID - HDD Serial Number / model - Motherboard ID even MachineGuid under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography is exactly the same. I do not want to use MAC address because some machines do not have MAC address.

I had a look here and here and here but it did not help.

Anyone knows how can I find a unique identifier on the computer?

naouf
  • 627
  • 2
  • 18
  • 28
  • What about the `MachineGuid` under `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography`? Is a windows specific identifier enough? – Marco May 03 '19 at 08:52
  • 3
    This is a bad idea and very rarely done today because it has lots of problems. Almost all software today is licensed to a person/organization based on their identity rather than characteristics of their physical machines. – Hans Kilian May 03 '19 at 08:54
  • -Marco, thanks for mentioning that, yes even the MachineGuid is exactly same – naouf May 03 '19 at 08:55
  • Mac Address could be a choice – apomene May 03 '19 at 09:04
  • @HansKilian most subscriptions are a combination of person and machine based (netflis/apple licensed to person and specific number of machines) so there should be some way of tracking – peeyush singh May 03 '19 at 09:05
  • 1
    I have not done it, but would think this would be typical to how browsers manage cookie, on user request you would leave a unique key on the user machine and record this in your app/license server. On your app startup (or every once a week), you can check in if the installation has proper license and if any users has installed it more copies then allowed. – peeyush singh May 03 '19 at 09:14
  • Tangential discussion in https://stackoverflow.com/questions/20676008/where-can-i-store-and-manage-application-license-information/20676247#20676247. MAC address is extremely problematic (because there might be more than one NIC and it might be turned on/off). A combination of Computer (manufacturer, model) Motherboard (manufacturer, model, serial number), BIOS (manufacturer, serial number), CPU ID and `MachineGuid` should provide a fairly unique ID. Of course it won't help with VMs (but there isn't much you can do to extract a truly unique ID from a VM unless you create and store one yourself – Adriano Repetti May 03 '19 at 11:25
  • The main point is...for what you want to use this ID? To uniquely identify a client (for example to _validate_ a license? To detect when multiple users contacts a server using the same license from different computers? To detect when a machine specific license is reused in a new installation (even by the same user)? Each problem has a slightly different solution (even not considering VMs...) – Adriano Repetti May 03 '19 at 11:28
  • Adriano Repetti - I want To uniquely identify a client ( to validate a license) – naouf May 03 '19 at 14:04

0 Answers0