I have a small company and we sell a custom packaged software solution and we decided to go with USB dongles. We used a company called
Rockey who sells the dongles. The benefit of the dongles is that they can install the software on multiple machines but you can have checks in your code to make sure that the USB dongle is plugged in.
The dongles are relatively inexpensive and Rockey provides APIs and sample code for several different programming languages.