Yo estoy soy de la opcion de Josemi,
Puedes hacer que tu aplicación además de todos los "sistemas antipiratas "
que tengas que como bien han dicho van a ser crakeados con toda seguridad
, se tenga que conectar a uno de tus servidores para que le valides un usuario y contraseña, unicos para cada licencia.
Una vez que los valides hazle una compilación remota a la maquina del cliente y le validas la licencia, asi la última compilación valida y que hace que el programa funcione correctamente.
De esta manera puedes asociarle a la vez ese numero de licencia al número de la maquina que esta intentando validar la licencia.
Asi si tu cliente intenta instalar esa licencia en otro pc con otro numero de maquina distinto (puede ser por ej. el nº de serie del disco duro) tu puedes detectarlo y no dejarle.
Un saludo y suerte porque tienes una tarea dificil por delante