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