Machine-level offline activation?

Our product is used by a surprising number of schools, which is frankly a pain in the butt for me. They have proxies and/or firewalls with rigid administration (making it hard to get exemptions), multi-user systems where they want the license applied to the machine, don’t want their users to have admin rights, and in some cases even wipe the user-level data store regularly.

I’ve asked for this before (Machine-level license vs user-level) and followed the suggestion to have the system store an encrypted version of the key in the local store and auto-activate for new users. This only works for online activations, not offline, and isn’t fully secure because I don’t have it machine fingerprinted like the proper activation data is.

I would love a way to have an offline activation store data in HKLM (or OS equivalent for Mac / Linux) and have the user execution attempt to read it from there first, and fall back to the user profile store if the machine-level data isn’t found. I would execute the OfflineActivate() function with an LA_SYSTEM or LA_ADMIN flag to tell the system to store the activation data “globally” and that the current user has admin rights. Subsequent users wouldn’t be able to write this data, but could read it.


In case of offline activation, you need to store key as well as offline response file and use that to auto-activate for other users. Offline response is machine fingerprinted and can only be used on the machine where the offline request was generated.

The local activation data is not static and is updated on each server sync, and every run of your app.

Two schools so far have told me that user level registry data is not retained after the students log off. What kinds of side effects would you anticipate being caused by this? If I re-do the activation with every run, will it work ok anyway?


It seems they have enabled this behaviour.

Calling ActivateLicense () will work, but may slow down your app startup time, as it makes an HTTP sync request, by few seconds (1-2) depending on network latency.

I just wanted to make sure it wasn’t going to have any bizarre side effects. Schools are a pain in the @$$.

You should try using hosted floating licenses, they don’t require persistence. You won’t require any code changes too other than calling DeactivateLicense() on app exit.

That’s next on my list, along with the auto-persist offline activation code.