application VB6 ne pas exécuter comme tâche planifiée à moins que l'utilisateur est connecté

StackOverflow https://stackoverflow.com/questions/2610100

Question

Je serais très reconnaissant de l'aide sur celui-ci! Il peut être une question délicate. :)

Problème

  • J'ai une application VB6 qui est configuré comme tâche planifiée. Il commence à chaque fois, mais lors de l'exécution CreateObject() échoue si un utilisateur n'est pas connecté à l'ordinateur.
  • Je cherche des informations sur ce qui pourrait provoquer ce problème. Je soupçonne est parce que certains API Windows échoue.

Points clés

  • Comportement confirmé sur Windows 2000, 2003, 2008 et Vista.
  • L'application exécute en tant qu'utilisateur X au moment prévu, exécuté par le planificateur de tâches de Windows.
  • Il exécute à chaque fois. L'application ne démarre!
    • Si l'utilisateur X est connecté, il fonctionne parfaitement via RDP. (Notez que l'utilisateur n'a pas besoin d'être connecté, seulement connecté)
    • Si l'utilisateur X n'est pas connecté à l'ordinateur l'application échoue.

point d'échec

  • Application échoue lors de l'utilisation CreateObject() pour instancier un objet DCOM qui fait également partie de l'application.
  • Les objets DCOM déclarent .dll références au démarrage (globalement / au-dessus de .bas-file) et exécuter une fonction de démarrage petite. Le défaut doit être au démarrage, peut-être dans l'une des déclarations de .dll.

Pensées

Après quelques recherches sur Google mes soupçons ont été orientées vers MAPI. D'après ce que je pouvais voir MAPI utilisateur requis pour être connecté. L'application a des références MAPI. Mais même avec toutes les références MAPI supprimés ne fonctionne toujours pas.

Quelle est la différence si un utilisateur est connecté? la cartographie du Registre? Environnement? Explorer.exe est en cours d'exécution.

est-ce pas l'utilisateur connecté lorsque l'application exécute en tant qu'utilisateur?

Quelle information pourrait vous aider?

  • Une réponse définitive serait vraiment grand.
  • Toute information concernant toute fonctionnalité VB6 / Windows API qui pourrait agir différemment selon que l'utilisateur est connecté ou non serait définitivement aider.
  • Des expériences similaires peut me conduire dans la bonne direction.
  • Conseils sur le débogage. Ce
Était-ce utile?

La solution 3

Nous n'avons jamais ce qui a causé cela.

Au lieu de cela, je fait un client RDP que je mets dans les tâches planifiées. Il connecté sur un utilisateur qui a l'application nécessaire au démarrage. Après un certain temps le client RDP avec force déconnecté l'utilisateur (pour empêcher des applications d'emballement Modifier le système).

pas la solution parfaite, mais une solution quand même.

Autres conseils

L'application VB doit éventuellement se tenir aux services en cours d'exécution qui ne sont en cours d'exécution quand un utilisateur est connecté sur.

Quel est le paramètre « Identité » de la composante DCOM.

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

  1. C: \ WINDOWS \ system32 \ Com \ comexp.msc
  2. Services de composants
  3. Poste de travail
  4. Configuration DCOM
  5. L'objet DCOM , clic droit propriétés
  6. Identité onglet

Définir à « cet utilisateur » et définir un utilisateur avec les autorisations requises, puis exécutez l'application en tant que votre auto pour voir si le composant peut encore fonctionner DCOM, puis essayez à nouveau du programmateur.

a vos formes VB6?
parce que lors de l'exécution programmée, l'exécuter « en tant que service », donc il ne peut pas avoir des formes, ou si elle a une forme où les enviroment montrer.

Je ne me souviens pas de ce que je l'ai utilisé, mais il existe générique « fonctionne comme un service » convertisseur exe pour lancer les projets fenêtré VB6.

Peut-être aussi que vous pouvez facilement convertir votre code à exécuter comme VBScript, et le programmer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top