Pregunta

Le agradecería un poco de ayuda en este proyecto! Puede ser un asunto delicado. :)

Problema:

  • Tengo una aplicación VB6 que se configura como tarea programada. Se inicia cada vez, pero al ejecutar CreateObject() se produce un error si un usuario no ha iniciado sesión en el ordenador.
  • Busco información sobre lo que podría causar esto. Mi sospecha principal es que algunos API de Windows falla.

Puntos clave

  • Comportamiento confirmó en Windows 2000, 2003, 2008 y Vista.
  • Las aplicaciones se ejecuta como el usuario X a la hora programada, ejecutado por el programador de tareas de Windows.
  • Se ejecuta cada vez. La aplicación se inicia!
    • Si el usuario X está conectado a través de RDP funciona perfectamente. (Tenga en cuenta que el usuario no necesita estar conectado, sólo se registra en)
    • Si el usuario X no está conectado a la computadora la aplicación falla.

punto de fallo

  • aplicación falla cuando se utiliza CreateObject() para instanciar un objeto DCOM que es también parte de la aplicación.
  • El objetos DCOM declaran .dll referencias en el arranque (global / en la parte superior de .bas-archivo) y dirige una pequeña función de arranque. El no debe ser durante el inicio, posiblemente en una de las .dll-declaraciones.

Pensamientos

Después de algunas google mi sospecha inicial fue dirigido a MAPI. Por lo que pude ver MAPI de usuario necesario para iniciar sesión. La aplicación cuenta con referencias MAPI. Pero incluso con todas las referencias MAPI removidos todavía no funciona.

¿Cuál es la diferencia si un usuario está conectado? mapeo de registro? ¿Medio ambiente? Explorer.exe se está ejecutando.

No es que el usuario inicia sesión cuando se ejecuta la aplicación que el usuario?

¿Qué información podría ayudar?

  • Una respuesta definitiva sería verdaderamente grande.
  • Cualquier información con respecto a cualquier característica VB6 API / Windows que podría actuar de manera diferente dependiendo de si el usuario está conectado o no lo haría definitivamente ayuda.
  • Experiencias similares se me llevan en la dirección correcta.
  • Consejos sobre la depuración de esto.
¿Fue útil?

Solución 3

Nunca supo lo que causó esto.

En lugar de eso hizo un cliente RDP que puse en las tareas programadas. Se registra en un usuario que tenía la aplicación requerida en el inicio. Después de algún tiempo, el cliente RDP fuerza cerrará la sesión del usuario (para evitar aplicaciones que cuelgan fuera de control del sistema).

No es la solución perfecta, pero, sin embargo, una solución.

Otros consejos

El uso de VB posiblemente necesita para obtener control sobre los servicios que sólo se ejecutan cuando un usuario se registra en el funcionamiento.

¿Cuál es la configuración de "identidad" del componente DCOM.

C: \ WINDOWS \ system32 \ Com \ comexp.msc

  1. C: \ WINDOWS \ system32 \ com \ comexp.msc
  2. Servicios de componentes
  3. Mi PC
  4. Configuración DCOM
  5. El objeto DCOM , haga clic derecho propiedades
  6. Identidad pestaña

otra vez en "Este usuario" y establecer un usuario con los permisos necesarios, y luego ejecutar la aplicación como su auto para ver si el componente DCOM puede todavía trabajo, inténtelo de nuevo desde el programador.

tiene sus formas VB6?
porque cuando ejecución programada, es correr "como un servicio", por lo que no puede tener formas, o si tiene un entorno donde las formas para mostrarlos.

No recuerdo lo que he utilizado, pero existe "ejecutar como un servicio" genérico convertidor exe para ejecutar en ventanas VB6 proyectos.

También quizás usted puede fácilmente convertir su código para funcionar como VBScript y programarlo.

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