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

2024-05-07

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

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

像这样:(忽略箭头,借用图片)

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

编辑:一点背景:

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

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

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

编辑:针对 Windows Server 2008 R2(Win32_PrinterDriver 似乎不起作用)


您可以查询 WMI 以获取有关当前使用的打印机驱动程序的信息。这Win32_PrinterDriver 类 http://msdn.microsoft.com/en-us/library/windows/desktop/aa394366%28v=vs.85%29.aspx详细说明可用的属性。您可以使用中的类系统.管理命名空间 http://msdn.microsoft.com/en-us/library/dwd0y33x.aspx执行查询。

SelectQuery selectQuery = new SelectQuery("Win32_PrinterDriver");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);

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

您可以通过索引来访问属性,即printerDriver["DriverPath"].

另请参阅WMI 查询 http://msdn.microsoft.com/en-US/library/ms186146%28v=VS.80%29.aspxMSDN 上的主题。

有趣的是,微软此后添加了一个Get-PrinterDriver https://learn.microsoft.com/en-us/powershell/module/printmanagement/get-printerdriver?view=win10-ps某些版本的 PowerShell(在 Windows 10 等上)的命令行开关,其功能与上述代码非常相似。

更新:我正在查看旧问题并发现驱动商店资源管理器 https://github.com/lostindark/DriverStoreExplorerGitHub 上的项目。枚举所有打印机驱动程序的代码有很多内容,因此在这里重现它没有意义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何列出所有可用的打印机驱动程序,例如 C# 中的“添加打印机向导”? 的相关文章

  • 获取 TextBox 中的文本行数

    我试图通过标签显示文本框中的文本行数 但是 问题是如果最后一行为空 标签必须显示没有空行的行号 例如 如果它们有 5 行 最后一行为空 则标签应将行数显示为 4 Thanks private void txt CurrentVinFilte
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • C# 中直接从 URL 获取图像尺寸

    我正在尝试使用以下代码直接从网络上获取图片的尺寸 string image http www hephaestusproject com csharp3 png byte imageData new WebClient DownloadDa
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • C# - Visual Studio 中的 System.OutOfMemoryException

    我遇到问题 当我右键单击 Visual Studio 中的主窗体并转到 视图设计器 时 出现错误 它说 引发了 System OutOfMemoryException 类型的异常 堆栈跟踪 at System Reflection Asse
  • 如何检查号码是否只有唯一的数字?

    例如 2345 是唯一的数字 因为没有数字显示两次 但 3324 不是唯一的数字 因为 3 出现了两次 我尝试使用 但我 代码 显示但我没有得到数字我得到了数字 编辑 你不能使用字符串 number 10 number 100 number
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • C语言中没有循环可以打印数组吗?

    例如 在Python中 如果我们将一个列表作为数组 它会直接用一行代码打印整个数组 有什么办法可以用C语言实现同样的事情吗 简短回答 No 对表格上几乎所有问题的简短回答 用 C 语言做 X 工作能像用 Python 一样简单吗 No 长答
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • C# 实体框架我们应该使用 POCO.Id 还是仅使用 POCO 设置关系?

    我在服务方法中遇到一种情况 将 POCO 分配为另一个 POCO 的子对象无法按预期工作 我正在使用实体框架 4 public void ChangeOrderCurrency Currency currency order Currenc
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • 从二进制文件读取字节到 long int

    我有两个问题 我有二进制文件的数据 我想使用 read 函数读取前 8 个字节以签署 long int 但我不能 你知道我该怎么做吗 如何直接读取一块数据到字符串中 我可以像所示那样阅读吗 前任 ifstream is is open te
  • 删除数组时出现访问冲突异常

    删除分配的内存时 出现 访问冲突读取位置 异常 如下所示 我有一个针对 Visual Studio 2010 工具集 v100 C 编译器编译的本机 dll 我有一个针对它的托管 dll 包装器 它是针对工具集 v90 编译的 因为我想以
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd
  • 查找和替换正则表达式问题

    感谢这里对我其他问题的所有大力帮助 我开始掌握正则表达式 但我仍然对这个一无所知 我的代码是 StreamReader reader new StreamReader fDialog FileName ToString string con

随机推荐

  • 如何在C#中确定现有的oracle数据库连接?

    假设我使用正确的凭据调用以下方法 private bool Connect string username string password string CONNSTRING Provider MSDAORA Data Source ISD
  • Single.zip - 如何捕获失败的呼叫并继续其余的网络呼叫?

    我正在进行 5 个并行网络调用 模拟其中 4 个成功 其中 1 个失败 失败的调用使整个Single zip 失败 即使其他 4 个网络调用成功 我也无法获得它们的结果 如何处理单个失败的网络调用的错误Single zip 并获得成功者的结
  • 标头搜索路径给 Grabkit 带来麻烦

    我正在为 iPad 开发一个 iOS 6 应用程序 我使用一个名为 Grabkit 的存储库 我必须将其作为嵌套 子项目添加到我的项目中 为了使其工作 我必须在标题搜索路径中添加以下代码 TARGET BUILD DIR include G
  • 按行中的值选择 pandas 数据框中的列

    我有一个pandas DataFrame列太多 我想选择行中的值等于的所有列0 and 1 所有列的类型是int64我无法通过以下方式选择它们object或其他类型 我怎样才能做到这一点 IIUC 然后你可以使用isin http pand
  • Javascript:使用箭头键导航表格输入

    我正在为客户制作 HTML 成绩册 我使用 PHP 生成成绩册 然后输出一个 HTML 表 如下例所示 每个 td 包含一个带有 td
  • Spring 3 JSR-286(portlet)文档

    我知道Spring 3支持JSR 286 portlet 版本 2 0 但是我找不到很多这方面的文档 任何人都可以分享一些关于此的链接吗 谢谢 找到几个教程 使用 Spring 3 MVC Portlet 的 Hello World htt
  • 配置解析器和带 % 的字符串

    愚蠢的问题 当然 简单的答案 我正在使用 configparser 从文件中读取一些字符串 当字符串具有 符号 例如 时 它会抱怨 ConfigParser InterpolationSyntaxError 后必须跟 或 找到 有人熟悉这个
  • 防止打开 VB 应用程序的多个实例

    我的 VB6 应用程序由 MS Access 数据库支持 允许用户打开应用程序的多个实例会产生冲突并更改连接的数据库 理想的解决方案是 如果用户尝试打开新实例 则关注现有实例 我怎样才能达到这个目的 Use App PrevInstance
  • Spark 中的广播 Annoy 对象(对于最近邻居)?

    由于 Spark 的 mllib 没有最近邻居功能 我正在尝试使用Annoy https github com spotify annoy为近似最近邻 我尝试广播 Annoy 对象并将其传递给工人 然而 它并没有按预期运行 下面是可重复性的
  • 删除重载、递归溢出

    嘿伙计们 我写了一个快速测试 我想删除调用deleteMe 然后它会自行删除 这样做的目的是让我可以正常删除由lib分配的obj 我不希望因 crt 或 w e 导致任何崩溃 通过删除这个 我得到了一个堆栈溢出 没有它 msvc 说我泄漏了
  • 无法从 AsyncTask 启动服务

    我正在尝试从 AsyncTask 启动服务 但看不到它的启动 我还在清单文件中添加了服务 这里是代码 protected Integer doInBackground Void values throws InterruptedExcept
  • 使用 SAS 导出到 Excel

    假设我有 2 个 SAS 数据集 test1 sas 和 Test2 sas 现在我想将这2个数据集导出到Excel中 其中Excel文件Sheet1中将有test1 sas数据 Sheet2中将有test2 sas数据 怎么做 从 开始这
  • C++ 检查 unicode 字符是否为全角

    如何检查unicode字符是否是全角 我使用Win32 MFC 例如 中是全宽 A不是全角 是全宽 F不是全宽 你需要的是检索东亚宽度 http www unicode org reports tr11 的角色 您可以通过解析来做到这一点东
  • 关键词是真还是假?

    Are true and falseJava 中的关键字 这是完整的列表Java 语言关键字 http java sun com docs books tutorial java nutsandbolts keywords html 特别要
  • Javascript:确认、确定、取消按钮上的自定义文本

    我有一个验证 我想显示 继续 和 返回 而不是 确定 和 取消 但我无法找到准确的解决方案 任何人都可以帮助我
  • 嵌套列表递归python的序列

    给定一些数字 n 我想生成一个大小为 n 的列表 其中以下示例显示列表中的第 n 个元素应该如何 对于 n 0 返回 对于 n 1 返回 对于 n 2 返回 对于 n 3 返回 基本上 它采用先前的列表并将它们附加到新列表中 我尝试过以下方
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许执行任何操作

    我构建了一个应用程序并在本地部署 并且它运行良好 我将其部署在远程服务器上 并开始收到主题行中提到的异常 这不是因为任何防火墙问题 我改变了我的hibernate xml通过我的 IP 地址而不是 localhost 进行连接 现在我在本地
  • Trace.Assert 没有中断,也不显示消息框

    我有一个 WPF 应用程序 我在其中在画布上移动数据 当我像怪物一样尝试用鼠标移动数据时 问题就开始了 以下是操作的顺序 画布上的 MouseMove 被触发 在 MouseMove 中 我更改了一些数据 Trace Assert 失败 调
  • 在 Ember 中将模型属性插入 Img 元素 URL

    我有一个模型image id财产 我有一个包含图像元素的模型视图 我需要将 id 插入图像元素的src属性来完成图像的 URL 以便我有效地执行此操作 img src 我的第一次尝试使用了 Handlebars 助手 img src 但这也
  • 如何列出所有可用的打印机驱动程序,例如 C# 中的“添加打印机向导”?

    很可能我必须为此编写一些过于复杂的东西 并且没有常规的方法来做到这一点 但是 我怎样才能获得所有可用打印机驱动程序的列表 就像添加打印机向导按制造商然后按打印机显示驱动程序时所做的那样 我基本上需要一个自定义的添加打印机对话框 如果没有这个