Open Source:
I think that you can achieve your aims with Software Protector. With Software Protector
you can generate and test validation of license keys - from the application itself, or embedding its logic into your app.
The feature which I think makes it suitable for you, is that you can define up to 8 license features and create license keys based on those features(whether be available or not).
you can limit the time of software usage by one feature, limiting the number of user accounts with another feature, etc.
You can see a demo and starter guide of it Here.
Commercial:
Install Key is a project written in vs 2008 and can be recompiled with Visual Studio 2008 or later. Works with Visual Studio 2008, 2010, 2012 or 2013 - C# or VB.Net. .Net 2.0 or 4.0 or later.
Its main capabilities is as the following:
- Uses 30 character install keys made up of only capital alphanumeric characters. This helps to make keys easy to read and enter.
- Key validation against a central server. Validating an install key against a server should prove to be harder to bypass.
- Server validation is only required once. A surety file that is specific to the machine where the installation occurs can be validated again at any time, without another round trip to the license server.
- Unique key usage counting. Key usage counting is done by comparing a machine name identifiers.
My decision:
I think your need will be achieved by Software Protector
as you can define features in your software and then generate license keys based on those features.
per-client
means from your point of view? the number of installations? the number of concurrent users? the number of user accounts? etc.