2009-05-04 42 views
5

Tengo un .INF para una impresora virtual que necesito instalar desde una aplicación .NET. Lo he hecho antes de usar scripts por lotes, pero estoy buscando un fragmento de código para hacerlo en .NET Framework.¿Cómo puedo instalar una impresora usando .NET?

No hay nada particular acerca de la impresora .INF, por lo que cualquier código que instale una impresora desde un INF en C# o VB.NET funcionará.

Respuesta

9

Creo que esto es posible a través de interoperabilidad a las API de Win32 nativas, pero he encontrado es mucho, mucho más fácil simplemente utilizar un System.Diagnostics.Process() para poner en printui.dll a través de:

rundll32.exe printui.dll,PrintUIEntry /?

Tal vez usted ya está usando que en el archivo por lotes se ha mencionado, pero si no se documentan los parámetros: PrintUI.DLL User's Guide and Reference

Sólo asegúrese de probarlo en contra de todos los sistemas de la operación que necesita para apoyar. Algunas opciones no existen en todas las versiones de Windows o se han cambiado de nombre (aunque creo que son las opciones más esotéricas, la instalación de .INF probablemente funcionará en todos los ámbitos).

+0

+1 por ser mejor que mi respuesta;) – bsneeze

+1

vínculo se rompe = ( – HiTech

1

Esto es no la solución ideal, pero si nadie más responde, puede crear un archivo de proceso por lotes e invocarlo a través de C#/VB.NET.

Alguien más probablemente sepa una forma más natural de hacerlo.

0

Deberá ajustar las API de configuración mediante PINVOKE o un objeto COM nativo.

5

Tendrá que ver los objetos WMI disponibles. Éstos le dan un control más fino de la configuración de la máquina local. Eche un vistazo al WMI code creator de Microsoft, creo que esto generará un código de ejemplo que puede aprovechar para resolver su problema.

+0

1: buena herramienta ... – Dscoduc

+0

Sí herramienta impresionante – Raymund

2

Administering Printer Settings in C# for Flexible Printing

ver este artículo, se utiliza un SDK de la plataforma MS DLL llama PRNADMIN para administrar impresoras, impresoras-conductores, impresoras-puertos, ... etc.

Personalmente lo uso en un proyecto comercial para instalar un controlador de impresora y cambiar el puerto de la impresora al puerto local para interceptar el Postscript. Y funciona como un encanto.

Alternativamente, puede utilizar algunos VBScripts preinstalados que vienen con ventanas en C: \ Windows \ system32 \ Printing_Admin_Scripts y aquí hay una un artículos para ellos:

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

Cuestiones relacionadas