Here's another way you can go. I think it's the PERFECT solution, but you be the judge.
It's called 'Copyminder'. I use it in my runtime solution and it works extremely well.
The way it works is that it encrypts the .exe file. Then, whenever the user runs the application, Copyminder checks to see if this is a valid installation. If it is, no problem, if it isn't it flags the installation and watches it more closely. Depending on the setting you use, you can have that installation disabled, either temporarily or permanently.
Users should have access to the internet, but it isn't absolutely necessary. Also, while accessing the internet seems like a EULA violation for a FM runtime, it actually isn't since Copyminder does the accessing, and since it dosn't actually pass any data on to the runtime.
The result is that you are perfectly protected in all situations. If someone gives away their copy you will know about it, and the "giver" runs the risk of having their copy disabled by Copyminder. Instead, they should download a new copy of the FM Runtime. When they do, they are required to register, which means you know who they are. And if they give faulty data, you can immediately disable that copy of your runtime.
Also, if the user needs to move their runtime solution to another computer (ie. hard drive crash), that isn't a problem either. Finally, there is no additional coding required on your part.
Their solution is extremely well thoughtout and effective.
Visit www.Copyminder.com. The company that runs it (Microcosm) has been doing software security since the 1980's. They're also very good to work with.
This may be THE most dynamic, flexible yet strongest security solution out there.