Hitokiri --
The problem with checking against a hard disk serial number is: what happens when the hard disk gets changed? This could happen because the user is migrating to a larger hard disk, or because the existing hard disk has failed -- disks of all types are the most failure-prone piece of hardware in your computer.
But whatever piece of hardware you authenticate against, some user might want to change it. Motherboard, processor, whatever. Figuring out whether you're running ont he same machine is in general a hard problem. Microsoft have attempted to do it with Windows XP; but due to people like me saying "but what if...?", they've had to water their solution down to the point of uselessness.
For a medium-to-large dollar piece of software, you can use a dongle, like a Dallas iButton or some such. Go to Google and search for "dongle". This way, your software can only be used by someone who physically possesses the matching dongle. But this is not very cheap, requires physically shipping the dongle to the customer, and even these can sometimes be cracked.
For shareware software, I think the best solution is to ask the user nicely to play by your rules -- you put a lot of effort into the software; if they are getting value out of the software, they should do it on the terms you ask. Plus if you want you could make the software run time-limited and force them to pay you before they get the unlocking password, as Eric suggested. -- Doug Burbidge mailto:doug@ultrazone.com