IIS 7.5 で ASP.Net 4.0 Web アプリケーションを実行しています。System.Drawing.Printing.PrinterSettings.InstalledPrinters
コマンドを使用して、インストールされているプリンターのリストを取得し、アプリケーションの各レポートを上記のプリンターに割り当てることができます。
アプリケーションのユーザー アカウントに完全な権限が設定されているサーバー上のネットワーク接続プリンターがいくつかある可能性があります。アプリケーションのユーザー アカウントが Windows からログオフするまで、すべてが完全に機能します。この時点で、ローカル プリンターのみが返され、ネットワーク接続プリンターは一覧表示されません。System.Drawing.Printing.PrinterSettings.InstalledPrinters
次の方法で、ネットワーク プリンターにアクセスできるユーザーに ASP.Net プロセスを偽装しようとしましたが、成功しませんでした。
- アプリケーション プール
Process Model
を特定のユーザー ID として実行するように構成しました。 Web.Config でアプリケーションの ID を特定のユーザーに偽装しました。
<identity impersonate="true" userName="user" password="pass"/>
advapi32.dll
最後に、 APIを使用してコードに偽装を実装しました
上記のすべてのメソッドで、WindowsIdentity
印刷時に真のユーザー名が返されます。
System.Security.Principal.WindowsIdentity.GetCurrent().Name
しかし、ここではなりすましは問題ではないようです。ユーザーがログオフすると、すべてのネットワーク接続プリンターが消えます。
これを解決する方法を知っている人はいますか?ユーザーがログインしていなくても、ネットワークに接続されたプリンターにアクセスする方法はありますか?