2009-08-13 7 views
0

J'ai écrit un service Windows en utilisant VS 2005 et C# sur WinXP Pro SP3. Il démarre un autre programme qui se termine et se termine ensuite.Windows XP Pro Service s'exécute en utilisant la connexion utilisateur, n'utilisant pas le système local

Le service est installé à l'aide de installutil et de serviceInstaller. Il est construit version et mis dans le répertoire C: \ Program Files \ MyService. Le compte serviceProcessInstaller est défini sur LocalSystem dans ses propriétés. Si je mets le log sur le système local j'obtiens une erreur «Accès refusé» (en utilisant un bloc try-catch), mais si je mets la connexion à mon compte avec le mot de passe correct, il fonctionne parfaitement.

Qu'est-ce que je fais mal? Toutes les suggestions seront les bienvenues.

+0

Je pense que ce serait mieux sur si si assez de gens avec threp pour le faire se promener le long. :) – EBGreen

Répondre

0

Il sera utile de savoir d'où provient l'erreur d'accès refusé. Puisque vous dites qu'il provient d'un bloc try/catch, je suppose que c'est votre code qui le gère. Cela voudrait dire que votre service commence très bien, mais a des problèmes à faire son travail.

Il peut s'agir d'un problème lié à l'environnement, car l'environnement de LocalSystem est différent de celui de votre compte d'utilisateur. En outre, il se peut que le programme démarré ne s'exécute pas correctement et renvoie l'erreur.

Sans plus d'informations, c'est juste de la spéculation. Que fait cet autre programme? Où se produit l'erreur? Pourquoi ne pas le déboguer et trouver quelle partie renvoie l'erreur d'accès refusé?

0

D'accord, il devrait être sur SO. Cela mis à part, vérifiez que votre système de fichiers/dossiers ne vous permet pas d'avoir les droits nécessaires. Faites de même pour les clés de registre. Le journal des événements système devrait vous donner quelques indices.

0

Les deux réponses: merci pour l'aide.

L'erreur orrurs lors de l'appel Process.Start().

La sécurité du fichier et du répertoire montre que Tout le monde a un accès complet aux répertoires et à l'exécutable.

TROUVEZ-LE! J'avais ajouté un nom d'utilisateur et un mot de passe à l'objet ProcessStartInfo, pensant que cela serait utile lorsque le programme cible essayait d'accéder à la base de données. Oops! Quand j'ai enlevé ce truc, la cible court comme jadis.

Merci encore à tous ceux qui ont répondu. Mea culpa!

Questions connexes