printserver выдает "Ошибка Win32: имя принтера неверно." исключение, несмотря на правильный путь к серверу

Я не знаю, почему это не работает:

PrintServer printServer = new PrintServer("\\\\servername");

У меня проблема с инициализацией PrintServer. Вышеупомянутое исключение продолжает появляться, даже если предоставленный путь printerServer является допустимым путем. Это так, поскольку я могу перечислить все принтеры, используя printerServer.GetPrintQueues, и использовать forex printQueue, чтобы получить соответствующее имя HostingPrintServer.

EnumeratedPrintQueueTypes[] queueTypesArray = new EnumeratedPrintQueueTypes[] 
{
    EnumeratedPrintQueueTypes.Connections,
    EnumeratedPrintQueueTypes.Local,
};
PrintQueueIndexedProperty[] indexPropertyArray = new PrintQueueIndexedProperty[]
{
    PrintQueueIndexedProperty.Name
};

PrintServer printServer = new PrintServer();
PrintQueueCollection queueCollection = printServer.GetPrintQueues(indexPropertyArray, queueTypesArray);

foreach (PrintQueue pq in queueCollection)
{
    if (pq.FullName == printerName)
    {
        this.printServerName = pq.HostingPrintServer.Name;
        this.printerName = pq.Name;
    }
}

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

PrintServerException - "... имя неверно", хотя я могу получить доступ к пути из окон

Для вашей информации, я использую Visual Studio 2010, работающую в Windows XP с двумя подключенными сетевыми принтерами. Принтеры могут выполнять печать без каких-либо проблем, используя PrintDocument, и принтеры также отображаются в PrintDialog.

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

Миллион спасибо заранее.

РЕДАКТИРОВАТЬ:

Только что протестированный с другим "настоящим" серверным принтером, вышеупомянутый метод работает нормально. Считается, что сервис Novell iPrint, который я не уверен, как поведение его вызывает проблему. Если кто-то знает больше о том, как получить доступ к серверу печати Novell iPrint с помощью C#, пожалуйста, не стесняйтесь поделиться. В настоящее время я все еще ищу решение.

1 ответ

Эй, я столкнулся с подобной проблемой, это то, что я заметил и сделал следующие изменения, просто попробуйте и дайте мне знать.

Эта проблема возникла из-за того, что в системе отсутствует функция / роль Windows "Служба печати и документов". Эта роль требуется для управления несколькими принтерами или серверами печати и миграции принтеров на другие серверы Windows и с них.

Чтобы добавить роль, перейдите в Панель управления-> Включить или отключить функцию Windows-> установите флажок "Служба печати и документов"-> установить.

Обратитесь к администратору сети для установки этого правила, если вы не можете добавить его.

После добавления роли вы можете создать объект сервера печати и получить все очереди печати на соответствующем сервере.

Другие вопросы по тегам