Pregunta

Tengo un .INF para una impresora virtual que necesito instalar desde una aplicación .NET. He hecho esto antes de usar scripts por lotes, pero estoy buscando un fragmento de código para hacer esto en .NET Framework.

La impresora .INF no tiene nada de particular, por lo que cualquier código que instale una impresora desde un INF en C # o VB.NET funcionará.

¿Fue útil?

Solución

Creo que esto es posible a través de la interoperabilidad con las API nativas de win32, pero he encontrado que es mucho más fácil usar un System.Diagnostics.Process () para llamar a printui.dll a través de:

rundll32.exe printui.dll, PrintUIEntry /?

Quizás ya lo esté utilizando en el script por lotes mencionado, pero si no, los parámetros se documentan aquí: Guía y referencia del usuario de PrintUI.DLL

Solo asegúrese de probarlo con todos los sistemas operativos que necesita admitir. Algunas opciones no existen en todas las versiones de Windows o han sido renombradas (aunque creo que son las opciones más esotéricas: la instalación de un archivo .INF probablemente funcionará en todos los ámbitos).

Otros consejos

Usted querrá mirar los objetos de WMI disponibles. Estos le brindan un mejor control de la configuración de la máquina local. Eche un vistazo a la Creador de código WMI de Microsoft, creo que esto generará un código de ejemplo que puede aprovechar para resolver su problema.

Administración de la configuración de la impresora en C # para impresión flexible

vea este artículo, utiliza un DLL de MS Platform SDK llamado PRNADMIN para administrar impresoras, controladores de impresora, puertos de impresora, ... 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 usar algunos vbscripts preinstalados que vienen con Windows en C: \ Windows \ system32 \ Printing_Admin_Scripts y aquí hay un artículo para ellos:

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

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

Alguien más probablemente sabrá una forma más natural de hacer esto.

Deberá envolver las API de configuración con PINVOKE o un objeto COM nativo.

Siempre vuelvo a los siguientes enlaces para instalar las impresoras 'programáticamente'.

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top