Redirect StandardIn при открытии ярлыка - PullRequest
0 голосов
/ 19 октября 2010

Из-за радостей UAC мне нужно программно открыть командную строку с повышенными правами, а затем перенаправить стандартный ввод, чтобы я мог использовать команду time.

Я могу открыть ссылку (.lnkфайл), если я использую

Process ecp = System.Diagnostics.Process.Start("c:/ecp.lnk");

, однако, если я использую этот метод, я не могу перенаправить standardIn.

Если я использую метод StartProcessInformation (который прекрасно работает, если вы вызываете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();

Я получаю сообщение об ошибке: Указанный исполняемый файл не является допустимым приложением Win32.

Может кто-нибудь помочь мне создать командную строку с повышенными привилегиями, в которую я могу записать стандартный вводиз?Или если кто-нибудь знает, как программно расширить командную строку?

1 Ответ

0 голосов
/ 19 октября 2010

На случай, если никто не придумает более удачную идею (довольно, пожалуйста), вот работа одного из самых коварных в моем офисе, только что придуманных:

  1. Copy cmd.exe (ссылка, указывающая на этот файл)
  2. Вставьте этот файл в другой каталог
  3. Переименуйте недавно вставленный файл во что-то другое
  4. Установите разрешения для этого нового файла на Запуск от имени администратора

Вы по-прежнему будете получать диалоговое окно эскалации, но, по крайней мере, вы сможете захватить стандартную часть этого действующего приложения Win32!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...