如何使用.NET安装打印机?

时间:2009-05-04 02:14:46

标签: c# vb.net printing

我有一个.INF用于我需要从.NET应用程序安装的虚拟打印机。我在使用批处理脚本之前已经这样做了,但我正在寻找一段代码来在.NET Framework中执行此操作。

打印机.INF并没有什么特别之处,因此任何从C#或VB.NET中的INF安装打印机的代码都可以使用。

6 个答案:

答案 0 :(得分:9)

我相信这可以通过互操作到本机win32 API,但我发现它更容易,只是使用System.Diagnostics.Process()通过以下方式调用printui.dll:

rundll32.exe printui.dll,PrintUIEntry /?

也许你已经在上面提到的批处理脚本中使用了它,但如果没有,则在此处记录参数:PrintUI.DLL User's Guide and Reference

请务必针对您需要支持的所有操作系统进行测试。某些选项要么在所有Windows版本中都不存在,要么已经重命名(尽管我认为它们是更深奥的选项 - 安装.INF可能会全面运行。)

答案 1 :(得分:5)

您将要查看可用的WMI对象。这些可以让您更好地控制本地计算机设置。看看微软的WMI code creator,我相信这会生成一些可以用来解决问题的示例代码。

答案 2 :(得分:2)

Administering Printer Settings in C# for Flexible Printing

参见这篇文章,它使用名为PRNADMIN的MS Platform SDK DLL来管理打印机,打印机驱动程序,打印机端口......等。

我个人在商业项目中使用它来安装打印机驱动程序并将打印机端口更改为本地端口以拦截Postscript。它就像一个魅力。

或者你可以在C:\ Windows \ system32 \ Printing_Admin_Scripts中使用Windows附带的一些预安装的vbscripts,这里有一篇文章:

http://technet.microsoft.com/en-us/library/cc771846.aspx

答案 3 :(得分:1)

这是不是理想的解决方案,但如果没有其他人回答,您可以创建临时批处理文件并通过C#/ VB.NET调用它。

其他人可能会知道更自然的方法。

答案 4 :(得分:0)

您需要使用PINVOKE或本机COM对象包装设置API。

答案 5 :(得分:0)

我总是回复以下链接以编程方式安装打印机。

http://support.microsoft.com/kb/314486

http://www.robvanderwoude.com/2kprintcontrol.php