Originally Posted by
matsp
Seeing as most OS's turn off CPU serial number detection, that's probably not a good candidate for ID's.
Aside from that, Salem and maxorators points are both valid and relevant: If you use the hard-disk ID as a key, what happens when that user decides to change his/her hard disk for another one?
You could of course put an encrypted marker in each program saying "This program belongs to <name>" [with a high-grade checksum], that way, if someone leaks it, you know who did it - and it will also act as a preventative measure that the user knows that his/her name is encoded into the application and you can trace it back to the original recipient.
I personally would be PROUD if one of my personal (non-commercial) applications was to be distributed to such an extent that I can find it on the interweb, but that's me, not you.
--
Mats