J'ai une situation intéressante. J'essaie d'exécuter un programme à partir de la ligne de commande et je ne peux pas rediriger par programmation son entrée pour une raison quelconque. L'exécutable que je cours est appelé. Spideroakone.exe. Cet exécutable demande un mot de passe. Quand je tape le mot de passe disons que le mot de passe est "asd" je peux réellement voir ce que je tape en texte clair. Je reçois un message d'erreur:C# application de console d'entrée de redirection ne fonctionne pas
'asd' is not recognized as an internal or external command ...
Si je lance le fichier exécutable comme ça:
cmd /c Spideroakone.exe
puis de nouveau je vois la même on me demande un mot de passe. Ensuite, je tape asd. Mais je ne peux pas voir ce que je tape et le mot de passe fonctionne et il n'y a pas d'erreur.
Maintenant, ce que je veux faire est d'écrire une application qui va exécuter Spideroak.exe et passer le mot de passe sur l'entrée standard. Cependant, en raison du comportement étrange de Spideroak, je ne peux pas passer d'entrée standard et je ne peux pas lire la sortie standard. Lorsque vous essayez de faire cela, mon application bloque sur la commande writeline. Je m'attendais à voir le mot "Password:" dans la stdout. J'ai essayé quelques exemples asynchrones et multithread mais pas de cela fonctionne. Le tampon de sortie standard est toujours vide. Je me demande quel est ce texte que je vois "Mot de passe:" s'il n'est pas écrit dans la stdout où il est écrit?
c'est le code que j'utilise. Quels blocs sur la ligne ReadToEnd()
. Ce code exact fonctionne très bien avec une application de la console que je fait si cela me fait penser l'exécutable que je suis en train d'exécuter est écrit d'une manière bizarre, mais dans une fenêtre de ligne de commande, il fonctionne très bien:
Process myProcess = new Process();
myProcess.StartInfo.FileName = @"c:\windows\system32\cmd.exe";
myProcess.StartInfo.Arguments = @"/c ""C:\Program Files\SpiderOakONE\SpiderOakONE.exe"" --headless";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.Start();
string s = myProcess.StandardOutput.ReadToEnd();
myProcess.WaitForExit();
C'est la capture d'écran de la fenêtre de débogage exacte et les blocs ligne iT sur:
Voici ce que je vois dans la fenêtre de ligne de commande:
S'il vous plaît modifier votre question et ajouter du code pour fournir [mcve] (https://stackoverflow.com/help/mcve) –
Est-ce que quelqu'un sait aussi comment rediriger la sortie du cmd actuellement ouvert dans un fichier . Je veux dire quand je tape asdf sur l'invite de commande, je vais voir un message '... n'est pas reconnu comme une commande interne ou externe ...' Je veux voir ce message dans un fichier. Comment fait-on cela? cela pourrait être lié à mon problème. –
Non ce n'est pas ça. En effet, la sortie d'erreur est différente de la sortie standard. –