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-> установите флажок "Служба печати и документов"-> установить.
Обратитесь к администратору сети для установки этого правила, если вы не можете добавить его.
После добавления роли вы можете создать объект сервера печати и получить все очереди печати на соответствующем сервере.