Проблем с хранением данных лицензии не возникает только в том случае, если программа активируется только для текущего пользователя, и только этот пользователь ей и пользуется. В остальных случаях есть нюансы.
Новая система безопасности Windows, которая была добавлена с систему, начиная Windows Vista, безусловно повысила безопасность работы в системе, но программистам только добавила забот.
Виртуализация реестра и файловой системы
Для того, чтобы старые программы, привыкшие работать под Windows 2000 и Windows XP могли без изменений работать под системами
Windows Vista+, приложению даются права на запись в общую ветвь реестра - HKEY_LOCAL_MACHINE\Software, а также на запись
в некоторые части файловой системы, но реальная запись происходит в ветку HKEY_LOCAL_MACHINE\_Classes\VirtualStore\Machine\Software.
Аналогичная ситуация имеет место быть и для файловой системы.
Статус виртуализации определяется следующими параметрами (тут могут быть неточности):
- Виртуализация включена, когда приложение запущено с обычными правами и
- отсутствует манифест приложения;
- в манифесте не указано, что следует отключить виртуализацию. Такие манифесты добавляют, как минимум, MSVC2005 и MSVC2008.
- Виртуализация выключена
- в манифесте указано отключение виртуализации;
- когда приложение запущено с повышенными правами.
Основная проблема с виртуализацией состоит в том, что если вы записали данные лицензии в ветку HKEY_LOCAL_MACHINE\Software,
то вы ожидаете, что программа будет работать для всех пользователей, а это не так.
Для того, чтобы записать данные лицензии в общую ветку реестра, нужно, чтобы программа была запущена с повышенными правами. Для того, чтобы прочитать данные из общей ветки реестра, нужно отключить виртуализацию.
Управление вируализацией
Для определения текущего уровня привилегий пользователя, определения и установки статуса виртуализации есть новые функции (вернее, как новые, так и старые с новыми значениями параметров) WinAPI, но их использование не слишком просто. К тому же, если хочется поддерживать совместимость с версиями системы Windows 2000 и Windows XP, некоторые функции придется загружать динамически.
Комментариев нет:
Отправить комментарий