2012-05-06 88 views
5

我在IIS 7.5上運行的ASP.Net 4.0的Web應用程序,我可以使用System.Drawing.Printing.PrinterSettings.InstalledPrinters命令獲取安裝的打印機列表中,並在應用中的每個報告分配到上面列出的任何打印機!網絡連接的打印機在ASP.Net應用程序不可

可能有一些網絡連接的打印機都設置有完全權限應用程序的用戶帳戶的服務器上,一切都運行完美,直到應用程序的用戶帳戶註銷窗口,在這一點上System.Drawing.Printing.PrinterSettings.InstalledPrinters只返回本地打印機,沒有列出網絡連接打印機!

我試圖在ASP.Net過程模擬用戶能夠訪問網絡打印機在以下幾個方面,但沒有成功:

  • 我配置的應用程序池Process Model作爲一個 特定用戶身份運行身份。
  • 我模擬的應用程序的身份給特定用戶 Web.Config中:

    ​​

  • ,最後用advapi32.dll API

在上述所有的方法來實現的代碼模擬,WindowsIdentity在打印時返回真實用戶名:

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

但它看起來像那假冒不是這裏的問題,當下用戶註銷時,所有網絡連接的打印機都不見了!

有沒有人知道如何解決這個問題?即使用戶未登錄,是否有任何方式可以訪問網絡連接的打印機?

+0

我們有同樣的問題...你有沒有找到這個解決方案? – JDT

回答

3

網絡連接的打印機,共享文件夾和映射驅動器是唯一能夠在用戶登錄到操作系統,他們幾乎沒有一個快捷方式到一些網絡資源,全部切斷,並且當相應的用戶註銷無法訪問!

使用System.Printing.PrintServerGetPrintQueues方法,你可以得到打印隊列的集合打印服務器主機:

PrintServerUNCName是對應服務器的UNC name,如\\MyServerName

var printers = new PrintServer("PrintServerUNCName").GetPrintQueues() 
    .Where(t => 
    { 
     try { return t.IsShared && !t.IsNotAvailable; } 
     catch { return false; } 
    }) 
    .Select(t => t.FullName) 
    .ToArray(); 
相關問題