How To: Component Licensing in .NET[
^]
The ONLY way to do this in Windows is with a two-way activation system. I use WooCommerce to track activations of a product key. In WooCommerce with the Software add-on, the person purchases the license, they get a certain number of activations. After they reach the activation limit, it can't be installed again.
Windows doesn't have any truely unique numbers to it. Even hard drive and network interface cards serial numbers can be duplicated. Not all processors return the ProcessorID, etc. The most unique and reliable number that I've found is the installation date, which is a 32-bit integer of when Windows was installed (to the second), but if they use cloning software or copy a Virtual Machine then even that isn't unique.
I've written a pretty reliable program that can detect if you are running the process inside a virtual machine, I can post the code if that helps, but using a global number to limit to one computer just won't work. You need to generate some kind of hardware ID, transmit that to your server (or even email), and then generate the license code or activation code that binds that license to that specific computer.