How can I allow small identifier or hardware changes?
The Protection PLUS 5 SDK APIs allow you to compare and validate information about the system currently running versus the system which was authorized at the time of activation. You can choose what system identifiers are used, and you can also choose the validation logic of those identifiers.
It is not uncommon for a customer to change some of his or her computer's hardware after activating your software. Changes or additions to the system identifiers can occur when components or drivers change or fail, and it is often appropriate for your application to allow for some amount of change without requiring activation.
If the system identifiers in the license file do not pass the validation check against the system identifiers of the current device, then the licensing will restrict use of the software, which is exactly how you want the validation to work to enforce copy-protection. You do not want a user to be able to copy a license to another computer and have it pass the validation check. The issue is that your validation logic may be too strict, such as requiring an exact match of all system identifiers, as there are times when legitimate changes to the device may result in a small change to the system identifiers.
Fuzzy-matching
Fuzzy-matching allows some change in the current System Identifiers when compared to the System Identifiers that were set during the initial activation.
If you use MAC addresses from the system's Network Interface Cards (NICs), you might expect the number of NICs present to change on mobile computers or laptops. This is because many laptops might have removable hardware connected and disconnected regularly, which sometimes includes docking stations. With this in mind, your application can leverage the Protection PLUS 5 SDK APIs to ensure at least a certain number of NICs match, as it best suits your application's licensing requirements. Of course, this principle can be applied with any type and combination of system identifiers.
A common implementation is to only require at least one NIC Identifier to match and disregard any other NIC Identifiers that do not match in the validation process. Another implementation could be allowing all NIC Identifiers to fail to match as long as all other System Identifiers match (Hard Drive, Processor, etc...). You can configure whatever implementation of fuzzy-matching that best suits your needs.
Many of our sample applications demonstrate fuzzy-matching (see the license class Validation method in source code). The Protection PLUS 5 SDK manual also contains additional information on fuzzy-matching and implementation.