When a user’s hardware has changed, IsLicenseGenuine etc. return LA_E_MACHINE_FINGERPRINT. In that case we tell the user what’s going on, but if we then let the user deactivate his license via DeactivateLicense(), that one in turn too gives the error LA_E_MACHINE_FINGERPRINT (as stated in the inline API comments).
What is the best way to deactivate a license from a machine with hardware changes? I could call Reset() in that case, but that seems a bit overkill? Are there better options?
Also: is there an easy way for me to test this LA_E_MACHINE_FINGERPRINT error state (preferably in the debugger too) without buying new hardware and cloning over my OS?
The most effective approach in this scenario would be to delete the activation through the Admin portal, or your customer can do so via the customer portal.
Also you need to implement a workflow within your application that allows the user to reactivate their license.
you can test LA_E_MACHINE_FINGERPRINT by using SetCustomDeviceFingerprint() which will allow you to define your own fingerprint.