J'apprécierais énormément de l'aide sur celui-ci! Cela peut être difficile. :)L'application VB6 ne s'exécute pas en tant que tâche planifiée sauf si l'utilisateur est connecté
Problème
- J'ai une application VB6 qui est configuré comme tâche planifiée. Il démarre à chaque fois, mais lors de l'exécution de
CreateObject()
, il échoue si un utilisateur n'est pas connecté à l'ordinateur. - Je cherche des informations sur ce qui pourrait causer cela. Mon principal soupçon est que certaines API Windows échouent.
Points clés
- Comportement confirmé sur Windows 2000, 2003, 2008 et Vista.
- L'application s'exécute en tant qu'utilisateur X à l'heure planifiée, exécutée par le planificateur de tâches Windows.
- Il s'exécute à chaque fois. L'application commence!
- Si l'utilisateur X est connecté via RDP, il fonctionne parfaitement. (Notez que l'utilisateur n'a pas besoin d'être connecté, uniquement connecté)
- Si l'utilisateur X n'est pas connecté à l'ordinateur, l'application échoue.
non point de
- application échoue lors de l'utilisation
CreateObject()
pour instancier un objet DCOM qui fait également partie de la demande. - Les objets DCOM déclarent des références .dll au démarrage (globalement/au-dessus du fichier .bas) et exécutent une petite fonction de démarrage. L'échec doit être au démarrage, éventuellement dans l'une des déclarations .dll.
Pensées
Après quelques recherches sur Google mes soupçons ont été orientées vers MAPI. D'après ce que j'ai pu voir, MAPI a demandé à l'utilisateur d'être connecté. L'application a des références MAPI. Mais même avec toutes les références MAPI supprimées, cela ne fonctionne toujours pas.
Quelle est la différence si un utilisateur est connecté? Cartographie du registre? Environnement? Explorer.exe est en cours d'exécution.
L'utilisateur n'est pas connecté lorsque l'application s'exécute en tant qu'utilisateur?
Quelle information aiderait?
- Une réponse définitive serait vraiment géniale.
- Toute information concernant une fonctionnalité VB6/API Windows qui pourrait agir différemment selon que l'utilisateur est connecté ou non aiderait définitivement.
- Des expériences similaires peuvent me mener dans la bonne direction.
- Astuces pour le débogage.
Avec quelle (s) erreur (s) l'application at-elle échoué? Des conseils dans le journal des événements ou lors de l'utilisation de Debug View (http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx)? Notez qu'un processus s'exécutant en tant que tâche planifiée s'exécute dans un environnement non-interactif où des choses comme essayer d'afficher une fenêtre peuvent entraîner un comportement inattendu. –