Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm writing an application that will be made available for sale. I'd like to have a system to ensure that customers have paid to use the software.

The variables to consider are: 1) Number of users in an organisation 2) Facilities available in the application to the users 3) Licensing period - ie one month or one year

Are there any free or commercial offerings that can be used to help with this?

What are the best practices for this kind of thing?

What else should I be considering?

My initial idea is to have a block of encoded text which is either emailed, or downloaded. The contents of the block of text would include a unique number for the PC, end date, facilities etc. I guess I would need a server somewhere to control the number of licenses for an organisation.

share|improve this question

migrated from stackoverflow.com Apr 13 '11 at 15:00

This question came from our site for professional and enthusiast programmers.

@Mike - There are tons of quality offerings. Honestly there is not much use for both a secure and free offering. A simple Google search can find most of those offerings. I as a user hate it when an application fails to work because of its DRM software. I don't buy broken software and I judge the author of a given peice of software based on the criteria of "it works" when it doesn't work I stop using it ( and thus don't purchase future versions/updates/applications from said comapny ). –  Ramhound Apr 13 '11 at 15:13
Free/Open Source Software has much simpler license schemes (make as many copies as you like and use it as long as you want), and I'd be surprised if somebody wrote some sort of free license server. –  David Thornley Apr 13 '11 at 17:12
add comment

1 Answer

This is the business we're in at Agilis Software - just to declare my interest - so falls right in our area of expertise.

We've published a number of White Papers and articles on license management, some of which are available through our website, and others are published web articles e.g. What Is a License Manager?.

The main licensing controls you describe are available in any competent commercial licensing system, such as our Orion License Manager: managing and limiting the number of active users, configuring the available product features, and setting a subscription or trial time limit. Some further issues you may want to consider include:

  • How many license servers would your customer need to run? Can one server manage licenses over their entire worldwide VPN / WAN / intranet?
  • Do you also want to offer customers the option to have a license server hosted by you just manage their licenses over the Internet? (this can be attractive to some customers as they don't even have to think about a license server, plus of course you can readily manage their license from you on their behalf).
  • Might some users not have a network connection to the server, so does the licensing system provide some means of securely enabling licenses on disconnected systems?
  • What security measures are there to protect against hacks, such as attempting to extend a time-limited license by rolling back the system clock, replicating the license server, replicating the licensed application instance, spoofing or tampering with the application or license server's license-checking code, intercepting or spoofing the client-server communications....

Hope this helps.

share|improve this answer
Thanks - that is useful. –  Mike Vincent Apr 15 '11 at 13:42
No personal experience of Agilis - but customers get very annoyed when they can't run software they bought because of a license server fault, especially when it then takes days for the supplier to respond. –  Martin Beckett Jan 12 '12 at 5:26
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.