2008-08-18 5 views
5

Мы используем классический asp для вызова C# dll, а в C# dll мы используем System.Drawing.Printing.PrinterSettings.InstalledPrinters, чтобы получить список доступных принтеров. Если принтеры не используются совместно, они не будут отображаться, когда пользователь попытается распечатать. Учетная запись «Локальная система» может видеть и распечатывать их с dll VB6, и администраторы могут печатать только как можно скорее из C# dll, как вы могли бы ожидать. Есть ли какие-то разрешения, которые нам необходимы, чтобы предоставить пользователям такие принтеры?Принтеры недоступны, если не используются общие

+0

Я не уверен, что именно вы имеете в виду. Возможно, администратор может это сделать, потому что он сам вошел в систему или потому, что принтеры, которые может видеть конкретный пользователь, хранятся в виде записей в реестре. –

ответ

4

Насколько я помню, при запуске веб-сайта используется учетная запись сетевого пользователя, которая может не иметь разрешения на просмотр локальных принтеров.

В MSDN появилась страница, в которой говорилось, как вы можете олицетворять другого пользователя, который может иметь доступ к принтерам, но я не смог его найти.

Редактировать: Я опубликовал слишком рано. Here's the page.

НТН

+0

Я уверен, что он работает с учетными данными пользователя. В SQL Profiler мои запросы используют учетные данные пользователя. Предоставление доступа учетной записи сетевой службы к принтеру не решает проблему. – Ryan

3

Я абсолютно уверен, что выдает себя за пользователя или используя свои учетные данные не являются способность видеть принтеры для этого пользователя. Я считаю, что explorer.exe восстанавливает все сетевые ресурсы (домены/принтеры) при входе в систему.

+0

Если он подключается только при запуске explorer.exe, то почему администраторы смогут получить доступ к принтерам, когда ни один пользователь не войдет в систему? – Ryan