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.