我很可能不得不为此编写一些过于复杂的东西,而且没有常规的方法来做到这一点,但是:
如何获得所有可用打印机驱动程序的列表,就像添加打印机向导按制造商然后按打印机显示时所做的那样?我基本上需要一个自定义的添加打印机对话框,如果没有这个对话框,我就有点满足了。)
如下所示:(忽略箭头,借用图像)
我还需要列表中的驱动程序所指示的.inf文件的路径
编辑:一个小背景:
我正在尝试添加打印机,方法是在TS会话中调用添加打印机向导(具有提升的权限),将打印机添加到正确的TS端口,然后尝试保存该打印机的信息,以便在登录时根据我保存的值自动添加用户的打印机。
到目前为止,我还没有找到在添加打印机之后获取驱动程序信息(最好是该打印机驱动程序的.inf文件的实际路径,因为这样我就可以使用PrintUI安装打印机)的方法。
因此,我采用自定义对话框来匹配打印机驱动程序。由于该工具仅在打印机初始安装时使用,并且仅供管理员使用,因此我不介意有一个辅助对话框,您可以在其中再次选择驱动程序,以便我可以保存信息。
编辑:目标Windows Server2008 R2 (Win32_PrinterDriver似乎不工作)
发布于 2012-03-21 02:14:17
您可以查询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的一些版本(Windows10等)中添加了一个Get-PrinterDriver
命令小程序。它做的事情与上面的代码非常相似。
更新:我查看了一些老问题,发现了GitHub上的DriverStoreExplorer项目。枚举所有打印机驱动程序的代码有很多,所以在这里重复它是没有意义的。
https://stackoverflow.com/questions/9791970
复制相似问题