Por no hablar que una protección por HWID limita al usuario y le da problemas si se actualiza su PC, cambia de disco, formatea o compra más memoria RAM por ejemplo.
Yo creo que partiendo del punto en que no hay ninguna protección incrackeable, lo mejor es buscar una protección que combine una alta seguridad y tengo un impacto mínimo en el usuario y en la compañía.
(Un servidor de licencias + comprobación por HWID tienen impacto grande sobre la empresa y usuario final, como ya expliqué)
Pero es que eso también depende, depende de la difusión que le vayas a dar al programa. Por ejemplo, yo lo quiero para un programa que no voy a comercializar de forma pública, sino a unas pocas personas de forma privada, pero que no puedo permitir que entre esas personas se lo intercambien, ya que la idea es cobrar a cada una de ellas una cantidad X. E incluso podría darse el caso de cobrarles por períodos de tiempo, lo cual me haría necesario incluso comprobar la fecha de algún servidor...
Es decir, que tampoco me sería muy complicado hacer diferentes códigos para cada HWID, aunque este cambie en un momento determinado, pero está claro que si lo que se intenta hacer es un programa público y comercial, sería algo inviable claro...