У меня есть isapi * .dll, созданный с помощью Delphi, который создает и возвращает PDF по http-запросу. Код работает, если я создаю его в автономном exe, но на isapi возникает исключение: «Выбранный принтер недействителен».
Похоже, проблема ApplicationPoolIdentity .
Поиск в Google проблемы я нашел это объяснение ( https://stackoverflow.com/a/4619757/2936170 ):
Вероятно, это связано с изоляцией сеанса 0, которая была введена в Vista. Сервисы всегда работают в сеансе 0, но в XP и ранее первый пользователь, который вошел в систему, также работает в сеансе 0, что позволяет службам доступ к рабочему столу этого пользователя (что позволяет использовать "интерактивные" службы) и ресурсы (например, общие ресурсы и принтеры). Начиная с Vista, пользователи никогда больше не запускаться в сеансе 0, поэтому службы не имеют доступа к пользовательских ресурсов больше. Сервис должен выдавать себя за пользователя учетная запись, к которой он хочет получить доступ.
Я также создал тот же код в службе Windows и установил его с правами администратора, он работает!
Вопрос в том, как настроить пул ISAPI для просмотра принтера ]?