2010-12-02 17 views
0

J'utilise le code suivant pour exécuter un fichier de commandes à partir de C#. Le code suivant fait partie de mon service Windows. Ce code fonctionne parfaitement sous Windows XP mais lorsque je déploie mon service Windows sur le système d'exploitation Windows Server 2003, il renvoie le code de sortie 1 (échec). Est-ce que quelqu'un sait ce que je manque? Dois-je donner une autorisation spéciale au service Windows? Le service est installé en tant que service de système local.Impossible d'exécuter un fichier de commandes à partir d'un service Windows dans Windows Server 2003 OS

 ProcessStartInfo psi = new ProcessStartInfo(); 

     //specify the name and arguments to pass to the command prompt 
     psi.FileName = ConfigurationManager.AppSettings["BatchFilePath"]; 
     psi.Arguments = fileName; 


     //Create new process and set the starting information 
     Process p = new Process(); 
     p.StartInfo = psi; 

     //Set this so that you can tell when the process has completed 
     p.EnableRaisingEvents = true; 

     p.Start(); 

     //wait until the process has completed 
     while (!p.HasExited) 
     { 
      System.Threading.Thread.Sleep(1000); 
     } 

     //check to see what the exit code was 
     if (p.ExitCode != 0) 
     { 
      logger.Write("Exit Code" + p.ExitCode); 
     } 
+1

Qu'est-ce que le fichier batch retourne en cas de succès? – Oded

+0

En cas de succès, il renvoie 0 –

+0

Sur Windows Server 2003, je peux exécuter le fichier de commandes directement à partir de l'invite de commande et cela fonctionne très bien. mais ça ne marche pas du service Windows. –

Répondre

1

Mon prochain jeu consisterait à essayer de définir le service à exécuter en tant qu'utilisateur auquel vous êtes connecté comme s'il fonctionnait. De cette façon, vous saurez si c'est quelque chose de spécifique au compte du service réseau qui l'empêche de fonctionner.

+0

vous êtes l'homme! Ça a marché!!! –

+0

J'ai changé le service pour exécuter comme l'utilisateur que je suis connecté comme dans Windows Server 2003 et cela fonctionne très bien. Ce que je me demande maintenant, c'est que si je ne suis pas connecté, cela fonctionnera-t-il ou non? Je vais tester cela maintenant. Pensez-vous que le service devrait fonctionner avec un compte qui a des privilèges d'administrateur? Mon nom d'utilisateur avec lequel je suis connecté a des privilèges d'administrateur. En tout cas, merci pour votre précieux commentaire. –

+0

Idéalement, vous ne voulez pas lui donner des privilèges d'administrateur si vous n'avez pas à lui donner les privilèges minimum dont il a besoin pour fonctionner. Probablement les privilèges de l'utilisateur peuvent suffire. –