First, let me thank you for a so far useful product and service!
It's our pleasure.
As a note, we swallow the exception here, so if the user is not connected to the internet, nothing happens. Of course it should be dealt with, if we cannot call the server to validate the key. But that is not the point of this question.
You probably already know this, but you should warn the user subtly. Then retry the next time the user runs your app. After 5 or so consecutive failed IsGenuine() checks give the user an error and prevent them from continuing to use your app until they connect and validate with the LimeLM servers.
This will prevent a certain types of "dumb hacks" like preventing your app from connecting to the internet using firewall software or redirecting the LimeLM servers to localhost in the "hosts" file.
My problem is that, that as a test I have deactivated this product key on the server, so that the number of possible activations is 1, and used activations is 0.
Then the IsGenuine call above returns true because the product key is still valid and not revoked.
Actually it should return false. (I.e. the response should be non-zero, not TA_OK). It will also deactivate the license, but it will leave the product key installed.
Can you step through your "IsGenuine" function and see if the result is non-zero?