列出可用的网络打印机(也未安装)[重复]

Posted

技术标签:

【中文标题】列出可用的网络打印机(也未安装)[重复]【英文标题】:List available network printers (non-installed as well) [duplicate] 【发布时间】:2015-06-10 13:27:05 【问题描述】:

意味着我能够枚举所有打印机(网络和本地),但前提是它们安装在我的 PC 上

但是我希望能够列出那些未安装并且可以通过使用(Windows 内置)添加打印机对话框看到的。

是否有可能,因为我在浏览各种论坛/板(包括 stackexchange)时找不到任何有用的东西。

意思是我也尝试了内置的 .NET 类和 WMI (SELECT * from Win32_Printer),但显然它们只列出了已安装的打印机。

提前谢谢你

编辑:请注意,建议的答案不是针对未安装的打印机,而是仅针对已安装的打印机。我已经能够列出这些。谢谢

【问题讨论】:

您可能希望更明确地说明您所谈论的“建议答案”。 [链接]***.com/questions/1018001/… 嗨,我相信这是解决方案:link 【参考方案1】:

我不相信 .NET 中有任何东西可以做到这一点,您需要进行本地调用。 Here is the MSDN page 关于如何枚举网络资源,您需要做的是 P/Invoke WNetEnumResource 函数以获取 NETRESOURCE 对象。

您正在寻找具有dwTypeRESOURCETYPE_PRINT 的对象,当您找到它们时,您检查lpRemoteName 以获取打印机的名称。

这里是一个指向a example snippet 的链接,实现了它的使用(尽管 URL 声明它是 VB,但代码是 C# 中的)。我会在这里发布,但页面上的注释明确不允许未经作者许可复制和粘贴脚本。

【讨论】:

非常感谢您...它看起来很有希望,我即将测试建议的代码。会及时更新。再次感谢您 嗯,我想我无法编译该代码。我收到一些错误(方法必须有返回类型): //now call the function passing a null WNETOE(null); 我能够编译该项目。虽然我不太确定如何仅列出打印机,但工作正常。我会继续分析代码。谢谢 感谢您更新答案。非常感谢。这意味着我能够检查类型,但它们都返回 RESOURCETYPE_ANY ...虽然我可以通过“添加打印机”对话框看到未安装的打印机。有什么想法吗?

以上是关于列出可用的网络打印机(也未安装)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

列出每个用户的所有网络打印机

Powershell 列出远程 PC 上的网络打印机

如何列出网络上的所有打印机?

安装惠普网络打印机的经验

使用 ListBox Powershell 列出每台网络打印机

无法安装打印机,说RPC服务器不可用是怎么回事?