“Le système ne peut pas trouver le fichier spécifié” erreur sur process.Start ();

J’essaie de faire en sorte que le processus réponde sous forme de chaîne afin de pouvoir l’utiliser à un endroit différent de mon code, voici la solution que j’ai jusqu’à présent:

const ssortingng ex1 = @"C:\Projects\MyProgram.exe "; const ssortingng ex2 = @"C:\Projects\ProgramXmlConfig.xml"; Process process = new Process(); process.StartInfo.WorkingDirectory = @"C:\Projects"; process.StartInfo.FileName = "MyProgram.exe "; process.StartInfo.Arguments = ex2; process.StartInfo.Password = new System.Security.SecureSsortingng(); process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; try { process.Start(); StreamReader reader = process.StandardOutput; ssortingng output = reader.ReadToEnd(); } catch (Exception exception) { AddComment(exception.ToSsortingng()); } 

Mais quand je lance ceci, je reçois:

 "The system cannot find the file specified" error in process.Start(); without process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; 

Le code fonctionne correctement mais il suffit d’ouvrir la fenêtre de la console et toute la réponse du processus est là, donc je ne peux pas l’utiliser comme chaîne.

Est-ce que quelqu’un sait pourquoi je reçois cette erreur ou peut-être une solution différente à mon problème?

Je suppose que le problème réside dans le fait que le nom de fichier que vous spécifiez est relatif à votre répertoire de travail et que vous attendez que Process.Start y Process.Start coup d’oeil lors du démarrage du processus. Je ne crois pas que cela fonctionne de la sorte lorsque UseShellExecute est false . Essayez simplement de spécifier le nom de fichier absolu du processus que vous voulez démarrer:

 process.StartInfo.FileName = @"C:\Projects\MyProgram.exe"; 

Notez que j’ai également supprimé l’espace à la fin de la chaîne que vous avez affectée à la propriété FileName – il est tout à fait possible que le problème soit également traité.

Pour l’access System32, si vous essayez d’exécuter une application x86 sur x64, vous devez utiliser le mot clé “Sysnative” au lieu de “System32” dans votre nom de fichier.

EG: au lieu de:

C: \ Windows \ System32 \ whoiscl.exe

CA devrait etre:

C: \ Windows \ Sysnative \ whoiscl.exe

J’espère que cela aide quelqu’un