Вы можете создать небольшой внешний EXE-файл (в AIR), который будет запускать встроенную команду и получать конкретную информацию о компьютере пользователя.Смотрите мой ответ здесь с исходным кодом:
Как я могу нажать кнопку, выполнить команду в командной строке и получить обратно вывод в ActionScript?
Так, например,В Windows вы можете написать исполняемый файл на C ++ (используйте eclipse и mingw, а не Microsoft C ++, если вы не хотите распространять .net вместе с вашим exe).Просто используйте системную команду:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
std::cout << system("wmic csproduct") << std::endl;
return 0;
}
, которая выводит это:
Caption Description IdentifyingNumber Name SKUNumber UUID Vendor Version
Computer System Product Computer System Product OEM OEM 00000000-0000-0000-0807-XXXXXXXXXX(Hidden cause it's mine :D) OEM OEM 0
Согласно Microsoft эта команда возвращает S / N, уникальный для локальной машины.Если это неудовлетворительно, вы всегда можете получить серийный номер одного из разделов компьютера, для этого вам просто нужно поискать в Google.
В любом случае, независимо от того, что вы используете, просто сделайте так, чтобы, когда пользователь впервыерегистрирует, что получает эту информацию, обрабатывает ее в дайджест с использованием криптопакета AS3CoreLib (возможно, использует класс SHA256 для преобразования в хэш) и затем отправляет эти данные на сервер вместе с их регистрационной информацией.Всякий раз, когда они запускают приложение, просто заставьте приложение подключиться к серверу и перезапустите эту команду, сравнивая новый (при запуске) хеш с сохраненным на сервере, и если они не совпадают, вы знаете, что они переместили егона другой компьютер или отдал его для пиратства.
Источники:
http://support.microsoft.com/kb/558124
http://www.cplusplus.com/reference/clibrary/cstdlib/system/
https://github.com/mikechambers/as3corelib/tree/master/src/com/adobe/crypto