Существует множество «хитростей», но единственный реальный «физический ответ» - «нет, решения нет».
«Машина» - это не что иное, как пассивная шина с некоторыми аппаратными средствами.
Несмотря на то, что каждый элемент железа может обеспечить какой-то полезный идентификатор, каждый элемент железа может быть заменен пользователем по любой плохой или веской причине, о которой вы никогда не будете полностью знать (поэтому, если вы основываете свою функциональность на этом, вы создаете проблемы для своего пользователь, и, следовательно, как следствие, каждый раз, когда необходимо заменить / переинициализировать / перенастроить оборудование и т. д. и т. д.).
Теперь, если ваша проблема состоит в том, чтобы идентифицировать машину в контексте, в котором многие машины должны взаимодействовать друг с другом, эту роль хорошо играют MAC-адреса, IP-адреса или имена хостов. Но будьте готовы к мысли, что они не обязательно являются постоянными в течение длительного периода времени (поэтому избегайте жесткого кодирования их - вместо этого «открывайте потом» при любом запуске)
Если ваша проблема заключается в том, что вы не можете идентифицировать экземпляр программного обеспечения или лицензию, вам, вероятно, лучше сосредоточиться на другом виде решения: вы продаете лицензии «пользователям» (деньги есть у пользователя, а не у его компьютера). !), а не на свои «машины» (чтобы пользователи могли свободно менять их в любое время, когда они нуждаются / любят без вашего разрешения, поскольку вы не лицензируете оборудование или ОС ...), поэтому ваша проблема не в том, чтобы определить машина, но ПОЛЬЗОВАТЕЛЬ (учтите, что одна и та же машина может быть хостом для многих пользователей и что один и тот же пользователь может работать на разных машинах ..., вы не можете предполагать / навязывать соотношение 1: 1, не сталкиваясь с каким-либо проблем рано или поздно, когда эта идиома, если найден, больше не подходит).
Идея должна состоять в том, чтобы зарегистрировать пользователей на достаточно доступном сайте, дать им ключи, которые вы генерируете, и убедиться, что одна и та же пара пользователь / ключ не используется одновременно больше, чем согласованное количество раз в течение определенного периода времени. , Когда нарушения превышаются или ключи устаревают, просто заблокируйте и подождите, пока пользователь обновится.
Как видите, ответ в основном зависит от причины вашего вопроса, а не от самого вопроса.