Delphiで作成されたisapi * .dllがあり、httpリクエストでPDFを作成して返します。スタンドアロンexeでビルドするとコードは機能しますが、isapiでは例外が発生します。 「選択したプリンターが無効です」。
ApplicationPoolIdentityの問題のようです。
問題をグーグルで検索すると、この説明が見つかりました( https://stackoverflow.com/a/4619757/293617 ):
これは、Vistaで導入されたセッション0の分離が原因である可能性があります。サービスは常にセッション0で実行されますが、XP以前では、最初にログインしたユーザーもセッション0で実行されるため、サービスはそのユーザーのデスクトップにアクセスできます(したがって、「インタラクティブ」サービスが可能になります)。 )およびリソース(共有やプリンターなど)。Vista以降では、ユーザーはセッション0で実行されなくなるため、サービスはユーザー固有のリソースにアクセスできなくなります。サービスは、アクセスするユーザーアカウントを偽装する必要があります。
また、Windowsサービスで同じコードをビルドし、管理者権限でインストールしました。これで動作します。
問題は、プリンタを表示するためにISAPIプールをどのように構成するか?
私の自己に応答します。
正しいプールIDはLocalSystem