I'm using the current drop in C++ and doing this:
HRESULT hr; GENUINE_OPTIONS opts; opts.nLength = sizeof(GENUINE_OPTIONS);
// How often to verify with the LimeLM servers (90 days) opts.nDaysBetweenChecks = 0;
// The grace period if TurboActivate couldn't connect to the servers. // after the grace period is over IsGenuinEx() will return TA_FAIL instead of // TA_E_INET or TA_E_INET_DELAYED opts.nGraceDaysOnInetErr = 0;
// Don't show an error if the activation was done offline opts.flags = TA_SKIP_OFFLINE;
hr = IsGenuineEx((STRCTYPE)gAppGUID, &opts);
My issues:
1. If the user goes offline and runs the software, they will continue to get an error from IsGenuineEx() even after the network connection is re-established (TA_FAIL).
2. With a working internet connection: If I revoke the user's license, I still get TA_FAIL. Expected: get TA_E_REVOKED.
3. If I restore a user's revoked license, I still get TA_FAIL. Expected: get TA_OK.
I noticed in the docs: \\ IsGenuineEx() previously had a TA_E_INET error, \\ and instead of hammering the end-user's network, \\ IsGenuineEx() is waiting 5 hours before rechecking on the network.
This would explain results 1-3, I suppose, but if this is the cause, that behavior is not acceptable:My software will be used in a high-volume production environment and if the software is waiting for 5 hours to pass before trying the internet connection again, there will be staff being paid to wait for nothing. Just imagine yourself using a laptop on the road where sometimes you have internet and sometimes you don't. As it stands now it seems like a connection failure takes you offline for 5 hours. You're at a trade show. It will all be over in 5 hours.
I would have expected that if nDaysBetweenChecks = 0 and nGraceDaysOnInetErr = 0, LimeLM would indeed ping the server when asked to do so.
Note that I tried changing 'GraceDaysonInErr' from 0 to 1 without any change in the results above.
I tried running TurboActivate.exe manually and was simply told "Activation was successful" but IsGenuineEx() from my app produces the same results.
If I shift from licensed to trial mode when a networking connection fails, then I need to shift back to being licensed the next time the software is run / IsGenuineEx() is called [because the paid users won't tolerate running in trial for 5 hours]. But I'm just getting TA_FAIL when I try to activate.
On the flip side, I noticed the suggested defaults of 90 days between checks and 14 days grace. That's not going to work for my business - that's an eternity - if I kill a license it needs to stop working now, if a trial ends or the network connection isn't available it again needs to stop working now, and if I restore the license it needs to start working now.
Any suggestions?
---Mike.