2013-10-25 227 views
1

我出了主意,为什么这不工作:printserver引发“Win32错误:打印机名称无效。”尽管异常所提供的服务器路径是正确的

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

我有打印服务器的初始化问题。即使提供的打印机服务器路径是有效路径,上述异常仍会出现。这是因为我能枚举所有打印机使用printerServer.GetPrintQueues和foreach 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

为了您的信息,我使用Visual Studio 2010,其中连接两个网络打印机在Windows XP上运行。打印机能够使用PrintDocument执行打印而没有任何问题,并且打印机也显示在PrintDialog上。

之前是否有人遇到这个问题?如果是,我可否知道你如何解决这个问题?

百万在此先感谢。

编辑:

只是另一种“真正的”服务器打印机进行测试,上述方法是工作的罚款。据我所知,Nov​​ell iPrint服务,我不知道它是如何导致问题的行为。如果有人对使用C#访问Novell iPrint打印服务器的方式有更多了解,请随时分享。我目前仍在寻找 解决方案。

回答

1

嘿,我正面临着类似的问题,这是我观察并作出以下改动,只是尝试,让我知道。

由于系统上缺少windows功能/角色“打印和文档服务”,所以出现此问题。管理多台打印机或打印服务器以及将打印机迁移到其他Windows服务器以及从其他Windows服务器迁移打印机需要此角色

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

如果无法添加它,请与网络管理员联系以安装此规则。

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

相关问题