我有一个在 IIS 7.5 上运行的 ASP.Net 4.0 Web 应用程序,我可以使用System.Drawing.Printing.PrinterSettings.InstalledPrinters
命令获取已安装打印机的列表,并将应用程序中的每个报告分配给上面列出的任何打印机!
服务器上可能有一些网络连接的打印机都设置了对应用程序用户帐户的完全权限,一切正常,直到应用程序的用户帐户注销 Windows,此时System.Drawing.Printing.PrinterSettings.InstalledPrinters
仅返回本地打印机,没有列出网络连接的打印机!
我尝试通过以下方式向有权访问网络打印机的用户模拟 ASP.Net 进程,但没有成功:
- 我将应用程序池配置
Process Model
为以特定用户身份运行。 我将应用程序的身份模拟给 Web.Config 中的特定用户:
<identity impersonate="true" userName="user" password="pass"/>
advapi32.dll
最后使用API在代码中实现模拟
在上述所有方法中,WindowsIdentity
打印时返回真实的用户名:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
但看起来模拟不是这里的问题,用户注销的那一刻,所有网络连接的打印机都消失了!
有谁知道如何解决这个问题?即使用户未登录,是否有任何方法可以访问网络连接的打印机?