列出可用的网络打印机(以及未安装的)

List available network printers (non-installed as well)

意思是我可以枚举所有打印机(网络和本地),但前提是它们安装在我的电脑上

但是我希望能够列出那些未安装的,并且可以通过使用(windows 内置)ADD PRINTER 对话框查看。

这有可能吗,因为我在浏览各种 forums/boards 包括 stackexchange 时找不到任何有用的东西。

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

非常感谢您

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

我不相信 .NET 中有任何东西可以做到这一点,您需要进行本机调用。 Here is the MSDN page about how to enumerate network resources, what you will need to do is P/Invoke the WNetEnumResource function to get NETRESOURCE 对象返回。

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

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