很可能我必须为此写一些过于复杂的内容,并且没有常规方法可以做到这一点,但是:
如何让自己获得所有可用打印机驱动程序的列表,就像添加打印机向导在制造商然后由打印机显示它们时所做的那样?我基本上需要一个自定义添加打印机对话框,没有这个,我有点塞;)
像这样:(忽略箭头,借来的图像)
我还需要列表
中驱动程序表示的.inf文件的路径编辑:一点背景:
我试图通过在TS会话中调用添加打印机向导(带有提升的私有)来添加打印机,将打印机添加到正确的TS端口,然后尝试保存该打印机的信息,以便在登录用户时根据我保存的值自动添加打印机。
到目前为止,在添加打印机后,我无法找到获取驱动程序信息的方法(最好是该打印机驱动程序的.inf文件的实际路径,因为我可以使用PrintUI安装打印机)
因此,我使用自定义对话框来匹配打印机驱动程序。由于该工具仅在初始打印机安装时使用,并且仅由管理员使用,因此我不介意在第二次选择驱动程序时使用辅助对话框,以便我可以保存信息。
编辑:定位Windows Server 2008 R2(Win32_PrinterDriver似乎不起作用)
答案 0 :(得分:3)
您可以查询WMI以获取有关当前正在使用的打印机驱动程序的信息。 Win32_PrinterDriver class详细说明了可用的属性。您可以使用System.Management Namespace中的类来执行查询。
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(在Windows 10等上)添加了一个Get-PrinterDriver
命令行开关,它与上面的代码非常相似。
更新:我正在查看旧问题并在GitHub上发现了DriverStoreExplorer项目。枚举所有打印机驱动程序的代码有很多,所以在这里重现它是没有意义的。