En raison des joies de l'UAC, j'ai besoin d'ouvrir une invite de commande élevée par programme, puis de rediriger l'entrée standard afin que je puisse utiliser la commande time
.Rediriger StandardIn lors de l'ouverture d'un raccourci
Je peux ouvrir le lien (fichier .lnk) si j'utilise
Process ecp = System.Diagnostics.Process.Start("c:/ecp.lnk");
Cependant, si j'utilise cette méthode, je ne peux pas rediriger le standardIn.
Si j'utilise la méthode StartProcessInformation (qui fonctionne à merveille si vous appelez un exe)
ProcessStartInfo processStartInfo = new ProcessStartInfo("c:/ecp.lnk");
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.RedirectStandardError = true;
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
Process process = new Process();
process.StartInfo = processStartInfo;
bool processStarted = process.Start();
StreamWriter inp = process.StandardInput;
StreamReader oup = process.StandardOutput;
StreamReader errorReader = process.StandardError;
process.WaitForExit();
Je reçois le message d'erreur: L'exécutable spécifié n'est pas une application Win32 valide.
Quelqu'un peut-il m'aider à créer une invite de commande élevée dont je peux capturer l'entrée standard? Ou si quelqu'un sait comment escalader par programme une invite de commande?