Серебряной пули нет. Либо приложение запускается на клиентской стороне, и уникальность обеспечивается через проверку уникальности чего-то физического (продаваемое вместе с ПО оборудование, диск с ПО со специальной меткой, ключ с некопируемым токеном), либо приложение запускается в облаке, где контроль за уникальностью не нужен.
Все остальное - костыли, т.к. чисто программные компоненты (вроде конфигов, переменных окружения, реестра, сертификатов, hostname) можно подменить