Можно взять 3 компонента: ключ выданный при скачивании, ip и пароль который пользователь ввел при первом запуске. По этим 3 параметрам можно всегда идентифицировать экземпляр программы.
Ну и да, все 3 можно хранить в SharedObject. И даже если какой-то один из них потеряется, остальные 2 можно будет восстановить (осуществить перепривязку).
Например - потерся SharedObject и неизвестен теперь ключ продукта? - не беда, выдаем пользователю новый ключ (или восстанавливаем старый) по паре ip + пароль. Забыли пароль - не проблема, восстанавливаем исходя из ip + ключ продукта. Зашли с нового ip? - перепривязываем после ввода ключа и пароля.
Важным условием тут является то, что ключ продукта хранится в SharedObject, а пароль знает только пользователь.
Хотя может конечно это утопия