As you may know we offer MachineID function in our SystemInformationMBS module. That ID is a MD5 of some values of the computer like the Mac serial number, Mac model, CPU Brand string and hard disk serial. But that is not very stable as some people may have seen values change. Especially hard disk serial may sometimes be available and other times not.
So we got a better way as a Xojo project. Our new Machine ID example project uses a SQLite database for preferences and to keep a list of configurations. We use the following 10 values for a configuration: MACAddress, MacModel, HardDiscSerial, MacUUID, WinProductKey, ComputerName, CPUBrandString, Platform, PhysicalRAM and ProcessorCount.
The CheckMachineID method checks if the current values for all of them matches an existing configuration. If yes, we have a perfect match. Otherwise if 9 of 10 values match, we add the new configuration to the database. This way we learn all the configuration and user can change RAM or swap hard disk without breaking the licensing. Only if 2 or more values changed, we would ask for license key or activation via web and than store the new configuration.
The example will be included in next plugin prerelease. You may want to fine tune this to your needs.
Please provide back feedback and we can update our example.