首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何列出所有可用的打印机驱动程序,如C#中的添加打印机向导?

如何列出所有可用的打印机驱动程序,如C#中的添加打印机向导?
EN

Stack Overflow用户
提问于 2012-03-21 01:32:04
回答 1查看 3.5K关注 0票数 7

我很可能不得不为此编写一些过于复杂的东西,而且没有常规的方法来做到这一点,但是:

如何获得所有可用打印机驱动程序的列表,就像添加打印机向导按制造商然后按打印机显示时所做的那样?我基本上需要一个自定义的添加打印机对话框,如果没有这个对话框,我就有点满足了。)

如下所示:(忽略箭头,借用图像)

我还需要列表中的驱动程序所指示的.inf文件的路径

编辑:一个小背景:

我正在尝试添加打印机,方法是在TS会话中调用添加打印机向导(具有提升的权限),将打印机添加到正确的TS端口,然后尝试保存该打印机的信息,以便在登录时根据我保存的值自动添加用户的打印机。

到目前为止,我还没有找到在添加打印机之后获取驱动程序信息(最好是该打印机驱动程序的.inf文件的实际路径,因为这样我就可以使用PrintUI安装打印机)的方法。

因此,我采用自定义对话框来匹配打印机驱动程序。由于该工具仅在打印机初始安装时使用,并且仅供管理员使用,因此我不介意有一个辅助对话框,您可以在其中再次选择驱动程序,以便我可以保存信息。

编辑:目标Windows Server2008 R2 (Win32_PrinterDriver似乎不工作)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-21 02:14:17

您可以查询WMI以获取有关当前正在使用的打印机驱动程序的信息。Win32_PrinterDriver class详细说明了可用的属性。您可以使用System.Management Namespace中的类来执行查询。

代码语言:javascript
运行
复制
SelectQuery selectQuery = new SelectQuery("Win32_PrinterDriver");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);

foreach (ManagementObject printerDriver in searcher.Get()) 
{
    // Your code here.
}

您可以通过对属性进行索引来访问这些属性,即printerDriver["DriverPath"]

另请参阅MSDN上的WMI Queries主题。

有趣的是,微软后来在PowerShell的一些版本(Windows10等)中添加了一个Get-PrinterDriver命令小程序。它做的事情与上面的代码非常相似。

更新:我查看了一些老问题,发现了GitHub上的DriverStoreExplorer项目。枚举所有打印机驱动程序的代码有很多,所以在这里重复它是没有意义的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9791970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档