Window UID (идентификатор пользователя) и системный MA-адрес C могут быть изменены кем-либо, имеющим статус администратора. Я не думаю, что с этим можно что-то сделать.
Но это хуже, чем это. Любой механизм принудительного использования лицензионного ключа, который вы встраиваете в свое программное обеспечение, также может быть отключен кем-то с достаточными навыками, мотивацией и ... недостатком честности.
Единственный способ избежать этого - это физически управлять оборудованием на какое ваше программное обеспечение работает; т. е. запускать его как размещенную службу на собственном оборудовании.
Обратите внимание, что это не указывается от c до Java. Одни и те же проблемы существуют независимо от того, на каком языке написано ваше приложение. Существуют инструменты (например, обфускаторы), предназначенные для усложнения работы хакера. Но они не могут остановить кого-то с навыками и временем, чтобы сделать работу.