tags:

views:

147

answers:

3

I'm about to release my application which is built in C# VS2008 to my customer, and I want to prevent copy abuse post deployment, since it's easy to copy installation files to another machine and use the application. I want to limit usage to only one computer per installation.

A: 

Use an "activation" scheme, like Microsoft does with Windows. Each installation must authenticate itself against a server somewhere using a key. If a key is used more than once, prompt the user to call and talk to a real person.

David Morton
Well, it's a simple desktop application (.exe file and its db), am just looking for an easy way to do it.
DanSogaard
+3  A: 

See this question for some products that will help you do this...

http://stackoverflow.com/questions/118031/best-activation-key-software-for-net-application

My favorite for now is IntelliLock. Decent price, supports ASP.Net, and has been around for a while.

Locking to a machine ID is not a trivial thing to do manually. So I would us a license software package. Even if you're just trying to deter casual copying, you have to consider machine components change, and people get new computers.

But if you really want to do this manually see http://stackoverflow.com/questions/90462/cpu-serial-number and http://www.vcskicks.com/hardware_id.php. But note even the CPU Serial is not a fool proof method as it quite often is disabled.

kervin
Thank you, I tried IntelliLock and its working very well. I'll be looking at other way to do it manually though.
DanSogaard
+1  A: 

Use hashing to generate an unlock key. The idea is to gather some data which is fixed on the target machine but also unique. Examples are the name of the machine, id of network card, ... Generate a hash from these values and let the user send this data to you. Generated a new hash from this value and a secret key (only known by you) and send it back to the user. Now the user has to enter this key to unlock your software.

Achim