LA_ALL_USERS for Windows

We’ve been noticed that LexActivator 3.27 is released

and it allows multiple account activation for Window System

So, we tried to do that by changing second parameter of Lex::SetProductId from LA_USER to LA_ALL_USERS

however, we cannot perform multiple account activation in our test environment

Is there any further process to do not just changing LA_USER to LA_ALL_USERS?

it there any reference for this Issue please let use know

Sincerely,

Hi @Jose_T_Kim,

Could you please verify whether the license was activated after setting the permission flag to LA_ALL_USERS? Additionally, could you confirm that the user-locked property within the license is not enabled?

First, we used existing license that was activated with LA_USERS before

Second, in our test environment, the license property that we utilized is as follow

REVOKED: false
SUSPENDED: false
TOTAL ACTIVATIONS: 3
TOTAL DEACTIVATIONS: 3
VALIDITY: Unlimited
EXPIRATION STRATEGY: delayed
FINGERPRINT MATCHING STRATEGY: loose
ALLOWED ACTIVATIONS: 10
ALLOWED DEACTIVATIONS: 10
TYPE: node-locked
SERVER SYNC GRACE PERIOD: 0
SERVER SYNC INTERVAL: 3600
ALLOWED CLOCK OFFSET: 60
DISABLE CLOCK VALIDATION: false
EXPIRING SOON EVENT OFFSET: 259200
ALLOW VM ACTIVATION: false
ALLOW CONTAINER ACTIVATION: true
ALLOW CLIENT LEASE DURATION: false
USER LOCKED: false
REQUIRE AUTHENTICATION: false
DISABLE GEO LOCATION: false

Simply including the LA_ALL_USERS flag in the SetProductID() function does not achieve system-wide activation; the activation procedure must also be carried out as well.

Here is Update.

After create new license with non-User Locked option

we able to activate multiple window user in single Windows PC

however, after 3 users activate the software utilizing LA_ALL_USERS option

we cannot activate license for further users even though the ALLOWED ACTIVATIONS is set to 99

detailed experiment procedure is as follow

  1. Test PC is Window O/S and has 6 users (let’s say UserA, UserB, … UserF)

  2. Prepare S/W containing cryptelx LexActivator with LA_ALL_USERS flag

  3. Create New Node-locked License with 99 Activation Count, and WITHOUT USER_LOCKED property

  4. Log in to UserA, then activate license through the sotware in 1.

  5. Switching to UserB then run the software → automatically activated without any further process

  6. Switching to UserC then run the software → Same as 4.

  7. Switching to UserD → Activation failed

  8. Switching to UserE → Activation failed

  9. Switching to UserF → Activation failed

  10. When we switching to UserA,B,C the activated license is still valid

The functionality of system-wide activations is designed to be independent of the number of users on a computer. In our tests, which included scenarios with more than six users, we didn’t encounter the issue you’ve described.

It’s important to note that for system-wide activation, the activation process needs to be completed only once by any user on the machine. Following this initial activation, all other users will share the same activation, eliminating the need for each user to activate the software individually.

We suggest following our example where you can set the LA_ALL_USERS flag in SetProductId() for system-wide activation. Please use this approach in your implementation and let us know if the problem persists.

We follow the license activation process refer to the example that you gave

  • Lex::SetProductData

  • Lex::SetProductId
    with LA_ALL_USERS flag

  • Lex::SetReleaseVersion

  • Lex::SetLicenseKey

  • Lex::SetActivationMetadata

  • Lex::ActivateLicense

BUT still only few Window User can activate using other user’s activation (less than 2)

We activate the license initially using admin account

then try to utilize activated license after changing account (every other account is local user - not admin)

does every Windows Account should have admin authority?

or the initial activation should be proceeded in local user account?

If you have any further suggestion, please let us know

Sincerely,

It does not matter whether the activation is initially performed by an admin account or a standard user account.

Additionally, the ActivateLicense() function should be used solely at the time of the initial activation. After the license has been activated by any user, there’s no further need to call this function. Could you please send your code to support@cryptlex.com?

Sure

I made an test code that mimic the license process using our custom license manager adopting CrypLex

please look through the source code

and if there is any problem, please let us know

you can download them through follwing link without login

if you have any problem with access it, please let me know

Sincerely,

Hi @Jose_T_Kim,

To help us better understand and address the problem, we suggest using our provided sample as a basis for testing. This approach will allow us to ensure that the environment and setup are consistent for troubleshooting.

Actually, I think the previous code that I shared

is exactly same as your sample code

except paragma comment part for Window static Build

You can find the Lex usage code in LicenseManager.cpp

and the procedure of activation in main.cpp is also same as your example code

please check again and is there any other problem, let me know

Sincerely,

Although your sample code seems to have followed the correct workflow for activating the license. In our tests using the sample, we did not encounter the error and were able to activate a license across several user accounts successfully. To assist in our troubleshooting, could you kindly provide a sample code that builds upon our sample program?

Hi @Jose_T_Kim,

Could you provide the error code returned by the IsLicenseGenuine() function for UserD, E, and F, or any other users experiencing the problem?

To assist us in identifying the underlying cause, we would like to send you a debug build. Kindly contact us at support@cryptlex.com so we can provide you with the debug version.

Hi @ahmad-kemsan

At that moment, we finally failed to utilize LA_ALL_USERS feature

So we just used Node-Locked license which has huge amount of activation count :frowning:

Recently we plan to launch our commercial software at the beginning of August with CryptLex License System

Therefore, I want to re-open this issue.

start with answering your previous question:

the IsLicenseGenuine returns 1 which is LA_FAIL for UserD, UserE and F (Suppose LA_ALL_USERS license activated at UserA)

If there is any misunderstanding or mistakes in our activation step, please let us know,

  1. Create license from CrypLex Webpage (app.cryptlex.com)
  • Activation Count: 5 or more
  • License type : we tried every license type (Node-locked, hosted-floating, …)
  1. Login to UserA (windows account)
  2. Set product ID
  3. Active the software → Success
  4. switch window user to UserB
  5. Set product ID (same as 2)
  6. Activate the software → fail with the code LA_FAIL

We can even send you our C++ license activation library with test program utilizing CrypLex

Sincerely,

Hi Jose,

When you activate the license in UserA account, I suppose you mean calling IsLicenseGenuine() function in UserB (and not activate license) to check the license. Can you please confirm IsLicenseGenuine() function is returning LA_FAIL in UserB account even when activation succeeded in UserA account.

If this is the case, we will share a debug build with you to help us identify the exact issue. Please continue this conversation by sending your reply over our email thread - support@cryptlex.com as we will share the debug build over email.