Lo que quiero es saber como proteger un programa con una key que genero yo desde mi pc a base del hardware id que me pase el usuario que esta queriendo utilizar mi programa
Hola!
Para proteger tu ejecutable puedes usar protecciones existentes o crearte tu propia protección.
En el caso de usar una existente, debe elegir la que mejor se ajuste a tus necesidades. Existen varias opciones: armadillo, themida/winlicense, enigma, vmprotect, etc.
Si haces tu propia protección, vas a tener que definir la forma en la que trabajará la misma. Necesitarás conocimientos avanzados (mientras más avanzados, mejor) sobre programación, pero también sobre Ing. Inversa; pues ése es el método usado para romper las protecciones.
En fin, el tema es amplio. Si no quieres perder mucho tiempo y obtener una proteccion bastante eficiente (aunque no infalible), deberías optar por las existentes.
Saludos!