Appel d’un composant COM à partir du service Windows .NET

J’ai un service Windows écrit en .NET C # qui appelle un composant COM. J’ai également une application de test Windows Forms .NET que j’utilisais pour tester le composant COM. Cela fonctionne bien de l’application de test. Toutefois, lorsque j’utilise le même code dans le service Windows, rien ne se produit. Les composants COM enregistrent tout dans un fichier et le fait que le fichier journal ne soit pas généré indique que le composant COM n’est même pas appelé.

Pourquoi cela fonctionne-t-il depuis mon application de test mais pas dans le service Windows?

Le service s’exécute généralement isolé du bureau et, par conséquent, votre appel au composant COM est isolé de l’interface utilisateur lors de l’appel du service. Vous pouvez autoriser un service à “interactWithDesktop ” voir la section Utilisation d’un service interactif .

Microsoft ( in their infinite wisdom ) A décidé que cette fonctionnalité serait supprimée de Windows Vista et recommanderait de séparer votre application en plusieurs parties et d’utiliser d’autres mécanismes pour établir la communication entre votre interface utilisateur et votre service. Evidemment, certains (y compris moi-même) ne sont pas d’accord, mais c’est ce que c’est …

http://msdn.microsoft.com/en-us/library/ms683502.aspx

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/e50d8819-d628-48e2-aa2c-6ac6de8380d9/

Exécutez-vous votre service dans le compte LocalSystem (valeur par défaut pour les services Windows)? Votre composant COM peut avoir besoin d’accéder aux ressources disponibles dans un compte pouvant l’exécuter normalement …

Essayez de modifier votre service et de spécifier votre compte dans l’ onglet Connexion .