Delphi 2010 и Licensing System

Немогу заставить понимать VMProtect свои лицензии в Delphi 2010.
Когда компилирую пример "Examples\Licensing\Delphi" в Delphi 7 всё работает, ключ принимает.
Когда компилирую в Delphi 2010, то всегда выдает ошибку 2.
Может есть какие-то особенности в работе с Delphi 2010?
Как починить?

Да - особенности есть. Из-за того, что в Delphi 2010 “String” стал аналогом “UnicodeString” надо внимательно следить за типами передаваемых параметров в функции лицензирования.
В дельфовом примере достаточно изменить строку:

nState := VMProtectSetSerialNumber(PAnsiChar(edSerialNumber.Text));

на

nState := VMProtectSetSerialNumber(PAnsiChar(AnsiString(edSerialNumber.Text)));

Разобрался. Я переименовал VMProtectSDK32.dll, хотел скрыть присутствие VMP - вот и не работало.
DLL Box сильно затормозит работу?

Разобрался. Я переименовал VMProtectSDK32.dll, хотел скрыть присутствие VMP - вот и не работало.

VMProtectSDK32 необходимо программе ТОЛЬКО для режима отладки самой программы. После защиты эта DLL программе больше не нужна. Как работает проверка серийных номеров в режиме отладки - читайте хелп (Система лицензирования - Тестовый режим работы).

DLL Box сильно затормозит работу?

Вы планируете использовать DLL Box для бандлинга VMProtectSDK32?

В VMProtectSDK.pas меняем

const
// VMProtectDLLName = ‘VMProtectSDK32.dll’;
VMProtectDLLName = ‘abc123.dll’;

Переименовываем VMProtectSDK32.dll в abc123.dll, затем защищаем VMProtect’ом => не работает система лицензирования.

Пойду читать хелп, кажется теперь понял идею с длл…

Нельзя менять имя VMProtectSDK32/VMProtectSDK64!
VMProtect находит ссылки на API из VMProtectSDK (по имени DLL и имени API) и меняет их на свой код. Если переименовать SDK-ную DLL-ку, то VMProtect не будет менять вызовы API на свои и защищенная программа по прежнему будет работать в тестовом режиме.