JOHN_PROFF,
- Файлик в system32 с замудренным именем. Создается при инсталляции, в него пишется закодированная (а-ля md5) дата его создания (см. установки), читаешь дату его создания, проверяешь, подходит ли содержимое... Вариант примитивный, но работает

- В реестр можно писать кодовый ключик, к тому же не обязательно его писать в общепринятые места. Хорошо катит HKEY_CLASSES_ROOT\.8ba или что-то подобное. Ты много видел юзверей, которые туда смотрят? У меня вычисление такого ключика в свое время заняло часа 2-3, если бы не было оччччень надо (любимая девушка попросила), плюнул бы.
- Комбинация первого и второго варианта, причем по 3-5 ключей и файлов в разных местах. Если есть ошибка в проверке хотя бы одного, вписать новый файлик/ключ, который будет блокировать работу проги впредь впоть до переустановки винды - сильно затрудняет опрокидывание системы защиты путем проб и ошибок...
А вообще, купи себе хорошую книжку по криптографии/защите данных.