Я работаю над приложением ASP.Net, которое является веб-версией уже существующего настольного приложения winforms.Настольное приложение считывает файл лицензии, определяющий включенные функции, чтобы адаптировать его поведение.Чтобы заблокировать приложение на определенном компьютере, одним из параметров файла лицензии является серийный номер первого системного тома.При запуске приложение проверяет, совпадает ли серийный номер в файле лицензии с серийным номером тома.Получение серийного номера тома выполняется функцией GetVolumeInformation
PInvoking kernel32.dll.
Однако в версии asp.net стандартный пул приложений, использующий локальную службу или локальную сетевую идентификацию, не имеет разрешения для PInvoke, что приводит к невозможностипроверить лицензионный файл действителен.Как я могу проверить лицензию при запуске приложения?
Я могу подумать о следующих альтернативах:
- замена PInvoke методом, который не требует специальных разрешений для получения томасерийный номер (это в случае с WMI?)
- , поместив весь код проверки лицензии в отдельную сборку и установив его в GAC, чтобы он выполнялся с повышенными правами
- , создав пул приложений с администраторомличность только для моего приложения в процессе установки
Первое решение будет лучшим, но я не знаю, возможно ли это.
Есть ли у меня другие возможности?Каковы плюсы и минусы каждого метода?Какой из них лучший?