Общий принтер RDP работает нормально, но не тогда, когда приложение IIS пытается напечатать на нем - PullRequest
0 голосов
/ 06 августа 2020

У меня нет проблем с печатью Windows тестовой страницы на принтере через RDP, но приложение, работающее из IIS, не может печатать на общий принтер RDP. После соответствующей настройки PrinterSetting, который работает вне RDP, он видит принтер как недопустимый и отключенный.

Я видел несколько советов по установке разрешения на принтере для пользователя, запускающего приложение IIS, но все параметры безопасности отключены через RDP для перенаправленных принтеров, совместно используемых через RDP.

Оба условия, приведенные ниже, возвращают false через RDP на общий pritner. Я все равно попытался просто распечатать, и, как и ожидалось, получил исключение, так как он не может получить доступ к принтеру.

if (!printDocument.PrinterSettings.IsValid || !IsPrinterOnline())
private bool IsPrinterOnline()
{
    bool printerIsOnline = false;
    string printerName = _printerName;
    string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '{0}'", printerName);
    ManagementObjectSearcher searcherPrinters = new ManagementObjectSearcher(query);
    foreach (ManagementObject printer in searcherPrinters.Get())
    {
        printerIsOnline = !printer["WorkOffline"].ToString().Equals("True");
    }

    return printerIsOnline;
}

1 Ответ

0 голосов
/ 06 августа 2020

Когда вы подключаетесь к машине через RDP и приносите с собой принтеры, это позволяет приложениям, запущенным в вашем профиле , получать доступ к вашему удаленно подключенному принтеру.

Однако IIS приложения работают в другом пользовательском контексте, поэтому они не смогут получить доступ к принтерам, доступным в вашем пользовательском сеансе. Обычно они могут получить доступ только к принтерам, доступным для всей системы. Даже если IIS настроен для запуска пула приложений и сайта от имени одного и того же пользователя, подключенного удаленно, я не думаю, что IIS сможет печатать на принтере, потому что это другой экземпляр профиля пользователя.

Лучшим способом было бы подключиться к удаленному принтеру напрямую через UN C, вместо того, чтобы пытаться печатать на нем через RDP-соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...