printserver throw“Win32错误:打印机名称无效。”尽管提供的服务器路径是正确的例外

时间:2013-10-25 08:47:49

标签: c# winforms novell system.printing

我不明白为什么这不起作用:

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

我遇到PrintServer初始化问题。即使提供的printerServer路径是有效路径,上述异常仍会出现。这就是说,因为我能够使用printerServer.GetPrintQueues枚举所有打印机并预先通过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 - "...name is invalid" even though I can access the path from windows

为了您的信息,我使用在Windows XP上运行的Visual Studio 2010,连接了两台网络打印机。使用PrintDocument打印机可以毫无问题地执行打印,打印机也会显示在PrintDialog上。

以前有人遇到过这个问题吗?如果是,我可以知道你是如何解决这个问题的吗?

百万提前感谢。

修改

刚用另一台“真正的”服务器打印机测试过,上面提到的方法运行正常。据信Novell iPrint服务我不确定它的行为是如何引起这个问题的。如果有人了解更多关于使用C#访问Novell iPrint打印服务器的方法,请随时分享。我目前还在寻找 溶液

1 个答案:

答案 0 :(得分:2)

嘿,我正面临着类似的问题,这是我观察并做出的改变,只是试着让我知道。

由于Windows功能/角色"打印和文档服务"此问题正在发生。在系统上缺失。管理多台打印机或打印服务器以及将打印机迁移到其他Windows服务器或从其他Windows服务器迁移打印机时,需要此角色。

添加角色转到控制面板 - >打开或关闭Windows功能 - >单击复选框"打印和文档服务" - >安装。

如果您无法添加此规则,请与网络管理员联系以获取此规则。

添加角色后,您可以创建打印服务器对象并获取相应服务器上的所有打印队列。