Here is one approach that depends on hardware IDs:
Use this article :
How To Get Hardware Information (CPU ID, MainBoard Info, Hard Disk Serial, System Information , ...)[
^] to find out how to collect CPU ID and HDD serial number. Then make a
key
according to those numbers and show the generated key to your customers and ask them to tell you that generated key (also consider saving the obtained key in Windows Registry or somewhere else).
You should have a function(say
f(key)
) in your program and your customer service application that gets a key and generates a serial number which should be told to the customer. And customer by its side enters the
f(key)
as serial number into registration part of your application.
And in your application startup you should check the
f(key)
which is stored in your database or windows registry and if doesn't match or doesn't exist just exit without any message(It helps not revealing the decision point to the crackers ;) ).
It was very brief but I hope that it helps you.