Usiamo il classico asp per chiamare una dll C# e nella dll C# stiamo usando System.Drawing.Printing.PrinterSettings.InstalledPrinters per ottenere un elenco di stampanti disponibili. Se le stampanti non sono condivise, non verranno visualizzate quando un utente cerca di stampare. L'account del sistema locale può vedere e stampare da una DLL VB6 e gli amministratori possono stampare bene dalla DLL C# come ci si potrebbe aspettare. C'è qualche tipo di autorizzazione che dobbiamo concedere all'utente in modo che queste stampanti siano disponibili?Stampanti non disponibili se non condivise
risposta
Come ricordo, l'esecuzione di un sito Web utilizza l'account utente di rete, che potrebbe non disporre dell'autorizzazione per visualizzare le stampanti locali.
C'era una pagina su MSDN che diceva come si può impersonare un altro utente che potrebbe avere accesso alle stampanti, ma non sono stato in grado di trovarlo.
Modifica: ho postato troppo presto. Here's the page.
HTH
Sono abbastanza sicuro che sia in esecuzione con le credenziali dell'utente. In SQL Profiler le mie query utilizzano le credenziali dell'utente. Concedere l'accesso all'account del servizio di rete alla stampante non risolve il problema. – Ryan
Sono abbastanza certo che rappresentazione di un utente o utilizzando le proprie credenziali non costituisce la capacità di vedere le stampanti per quell'utente. Credo che explorer.exe ricolleghi tutte le risorse di rete (condivisioni/stampanti) all'accesso.
Se si connette solo quando viene eseguito explorer.exe, perché gli amministratori possono accedere alle stampanti quando nessun utente ha effettuato l'accesso? – Ryan
Non sono sicuro di cosa intendi esattamente. Forse l'amministratore può farlo perché lui stesso è connesso, o perché le stampanti che un particolare utente può vedere sono memorizzate come voci nel registro. –