Impresión de PDF desde el servicio de Windows en una máquina con Windows 7

Tengo un problema con la impresión de archivos PDF desde el Servicio de Windows.

El servicio de Windows tiene el siguiente código meta:

  • System.Process proceso = nuevo Proceso();
  • asignar ruta de archivo
  • asignar verbo = "imprimir"
  • CreateNoWindow establecido en verdadero
  • WindowStyle establecido en oculto
  • process.start ()

Creé el servicio de Windows y lo instalé en Windows XP como cuenta de usuario y funciona bien. Pero cuando instalo lo mismo en Windows 7 Enterprise, ya no imprime (aunque se instala correctamente)

¿Alguien tiene alguna idea de cuál sería el problema?

preguntado el 27 de julio de 12 a las 22:07

2 Respuestas

En Windows 7, puede haber configuraciones de políticas adicionales que impidan que los servicios abran procesos en segundo plano. En general, recomendaría buscar en Aspose.PDF, PDFTron o FoxIt SDK para imprimir desde un servicio.

Respondido 27 Jul 12, 22:07

Otro pensamiento... En WinXP las impresoras se comparten entre los usuarios. Recuerdo vagamente que este podría no ser el caso en Windows 7. - Darek

En Windows XP, su servicio se ejecuta en una Sesión 0 "regular", habilitada para inicio de sesión, pero en Windows 7 La sesión 0 está aislada y usar el shell para imprimir puede no funcionar como se esperaba allí.

¿Qué aplicación está imprimiendo sus archivos PDF? ¿Puede invocarlo directamente, pasando el archivo para imprimir en la línea de comando?

Respondido 28 Jul 12, 05:07

El proceso invoca directamente el software 'predeterminado' para ese PDF y da el comando 'imprimir'. Por ejemplo: si 'Foxit' Reader es el software predeterminado para archivos PDF, entonces se invoca y se le da el comando de impresión. - Observador pertinente

En realidad no. Su proceso invoca el shell de Windows, que luego debería invocar el software predeterminado como lo describe. Sin embargo, con el aislamiento de la sesión 0 no hay Explorer en la sesión 0 y sus llamadas para invocar el shell pueden generar resultados inesperados. Le sugiero que intente invocar a Foxit directamente en su objeto Process de esta manera: " " /pag - CoreTech

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.