tags:

views:

117

answers:

5

By best I mean more time tested, easier to implement and easier for the users to work with. I do not want my licensing crap to interfere with their work.

I was thinking of launching a WCF service that check with my license DB if it's a valid license and if it is, send a True.

If the returned response is False, then shut down the program after telling them to fix their license.

Do you think this is a good way to handle it?

+1  A: 

You will need to develop or find an algorithm that creates sufficiently complex strings for your license keys.

Generate the license key based on some bit of information unique to a user, like their E-Mail address.

Your program would then require the user to enter their E-Mail address and license key. It would then ensure the license key is correct by running the same algorithm you did to generate it in the first place.

JohnFly
Which can cause problems when email addresses change, or when somebody else takes over the application, or when somebody's email address gets distributed as a key. I was once using some very nice software when it stopped working, because our systems guys had changed our IP addresses. Fortunately, the customer service was good, and I was up and running again within an hour. Of course, not all software can be left disabled for an hour without serious consequences.
David Thornley
I should have stated that the license key should only be required one time.This scheme is very common, but hardly the "best". As stated earlier, by FrustratedWithFormsDesigner, any form of DRM can be worked around, you should focus on DRM that will work well enough to discourage the majority of people from using your software illegally, yet be easy enough to deal with that your paying customers don't find it obtrusive.
JohnFly
Include the algorithm within your program and you have just given it to the crackers.
Gary Willoughby
Acknowledged, although again, simple protection will keep the majority of people operating legally. Even companies such as Microsoft and Adobe have issues with cracking, and even Adobe's method of keys + "call home" can easily be defeated by anyone given 5min on google.Just being a realist on this issue.
JohnFly
A: 

You could try generating license keys strings using the user's name + dob + user-selected-password.

OR

Use the user's h/w serial numbers and give them a license key online post install. I am assuming at this point only one computer per license is allowed.

Sagar
A: 

The approach i have used in the past is a simple one but effective. I generate about a 1000 keys to my software and run them through a hashing algorithm. I then include them within my program (maybe as an array which takes up little space)

I then give out one unique key of the 1000 generated to each customer and when they enter that into my software it is hashed with the same hashing algorithm and compared against the included hashes. If it compares true you are registered so save it in your config file.

Every so often i update the program by another build number and recreate the keys and hashes included in that build. You just have to keep track of what keys go with what build, but you can control this with a nice database, etc.

Never had any trouble with this system as it can all be fully automated.

Gary Willoughby
A: 

Pinging the web service will not work if a net connection is not available. You should use a combination of pinging and a grace period. If a customer cannot validate/activate the license within 'X' number of days, THEN you declare it as unlicensed.

Try CryptoLicensing which supports this scenario.

logicnp
A: 

I suggest you take a look at OffByZero Cobalt (obligatory disclaimer: it's produced by the company I co-founded). You're better off buying an existing proven solution than rolling your own.

As we point out in Developing for Software Protection and Licensing:

We believe that most companies would be better served by buying a high-quality third-party licensing system. This approach will free your developers to work on core functionality, and will alleviate maintenance and support costs. It also allows you to take advantage of the domain expertise offered by licensing specialists, and avoid releasing software that is easy to crack.

Duncan Bayne