I am currently developing a custom device for our customer and he paid for it to be installed on 3 of his systems. As per our agreement, he can't install it on other Systems, but as we all know, mistakes can happen.
Is there an easy way to properly license a custom device to a certain machine?
One approach we could use is to read some property from the target and check if it's one of the 3 initial machines. HDD ID comes to mind.
HDD ID could be use, but you need to know that it is possible to alter the volume serial number of the HDD. Sysinternals (Microsoft) provides a tool for it which can be downloaded and used by everybody. Some OS also ship a CMD tool to do the same.
MAC address would also be posssible. If the custom device runs on Windows OS, the MAC address could also be faked. It would more work to fake a MAC addresss on a RealTime OS. I guess that you can change the MAC address on Linux OS, but I don't know if its possible on PharLap or VxWorks Targets.
I would recommend the System Configuration API, which enables you to get the the MAC address, the serial number of the controller and so one.