Подключенный к сети принтер недоступен в приложении ASP.Net

У меня есть веб-приложение ASP.Net 4.0, работающее на IIS 7.5, я могу получить список установленных принтеров с помощью команды 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.dllAPI

Во всех вышеперечисленных методах WindowsIdentityвозвращает истинное имя пользователя при печати:

System.Security.Principal.WindowsIdentity.GetCurrent().Name

Но похоже, что олицетворение не является проблемой здесь, когда пользователь выходит из системы, все принтеры, подключенные к сети, исчезают!

Кто-нибудь знает, как это решить? Есть ли способ получить доступ к сетевым принтерам, даже если пользователь не вошел в систему?

5
задан Kamyar Nazeri 6 May 2012 в 20:46
поделиться