Go to www.altavista.com, and search for "copy protection" and you will find hundreds of vendors. At the risk of overgeneralizing, none of them will stop a determined attack by a knowledgable hacker. If your program is very popular, or very expensive, know in advance that you will not get paid for each copy, no matter what you do. You need only glance at the various newsgroups which cater to hackers/crackers to see this.
Here is a simple approach which you can code yourself:
For each legaluser, create a key file with the user's basic information (Name, address, company, or whatever), plus a whole bunch of numbers, some of which, in some order, can be obtained by running the user information through some algorithm you choose or invent. If you want to be really nasty, insist of getting the MAC address of the user's NIC, and include that, but be prepared for screams when someone replaces their NIC card. The program runs the text through the algorithm, and compares with the numbers to validate the key file. It prints the user name on screens, and/or at the top of reports, and the user cannot change the information without killing the program. Let the program run in demo mode with no key file, and only print out registration instructions if the key file is tampered with. In a business environment today, no sane company is going to use software which is printing some other company's information on their reports, since one annoyed employee can blow the whistle.
If your program checks the key file periodically, using different code blocks (so that a cracker would have to find many spots to patch the binary), it is probably not worth someone's time to crack the protection. You can encourage users to buy the program by site-licensing, and by pricing it reasonably.
Good luck.