Bonjour à tous,

Je viens vers vous car je suis entrain de m'arracher les cheveux sur un problème

Ce que je voudrais faire :

Je dois depuis une fonction de mon WebService réalisé en C#, lancer une application avec des paramètres en ligne de commande, qui envoi des fichiers sur différents serveurs FTP.

Cet exécutable est SyncBack et le lancement se fait de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
"C:\Program Files\2BrightSparks\SyncBackSE\SyncBackSE.exe" -m Profil1 Profil2
Ce que j'ai testé :

J'ai tout d'abord testé "Process.Start()" et également avec divers paramètres.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Process myInfo = new Process();
myInfo.StartInfo.FileName = ch_V_NomExe;
myInfo.StartInfo.WorkingDirectory = ch_V_RepertoireExe;
myInfo.StartInfo.Arguments = ch_V_Argument; 
bool bo_Res = myInfo.Start();
L'exécutable se lance bien cependant les profils passés en paramètres ne s'exécutent pas.
J'ai donc pensé que la ligne de commande n'était pas bien gérée et j'ai créé un .bat qui me lance SyncBack.

Quand je le lance à la main pas de problème tout fonctionne mais quand mon WebService le lance, SyncBack se lance mais n'exécute pas les profils.


Peut être un problème de session qui fait que SERVICE RESEAU n'a pas le droit d'exécuter les profils, du coup j'en suis a essayer de lancer mon .bat depuis une session utilisateur mais je n'y arrive pas.

Je le fais de cette façon :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using (Process process = new Process())
                {
                    string pathToProgram = @"C:\test.bat";
                    string userName = "mon_user";
                    string password = "mon_pwd";
 
                    ProcessStartInfo processStartInfo = new ProcessStartInfo();
                    processStartInfo.FileName = pathToProgram;
                    processStartInfo.CreateNoWindow = true;
                    processStartInfo.UseShellExecute = false;
                    processStartInfo.RedirectStandardOutput = true;
                    processStartInfo.RedirectStandardError = true;
                    processStartInfo.UserName = userName;
                    processStartInfo.Password = new   System.Security.SecureString();
 
                    char[] passwordChars = password.ToCharArray();
 
                    foreach (char c in passwordChars)
                    {
                        processStartInfo.Password.AppendChar(c);
                    }
 
 
                    process.StartInfo = processStartInfo;
                    process.Start();
 
                }
Pourriez vous m'aider Svp ?
Merci.
Greg