2010-10-19 3 views
0

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?

Répondre

0

En cas de non-vient avec une meilleure idée (assez s'il vous plaît), voici le travail autour d'un des plus sournoise dans mon bureau juste venu avec:

  1. cmd.exe Copier (la lien pointant vers ce fichier)
  2. coller ce fichier dans un répertoire différent
  3. Renommez le fichier nouvellement collé à quelque chose de différent
  4. Définissez les autorisations sur ce nouveau fichier Exécuter en tant qu'administrateur

Vous continuerez à faire apparaître le dialogue d'escalade, mais au moins vous pouvez capturer le standardIn de cette application Win32 valide!

Questions connexes