Что является хорошей альтернативой использованию CopyData для приложений с повышенными правами - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть приложение, которое останавливает службу, копирует файл и снова запускает службу.Я хочу, чтобы он отображал индикатор выполнения и не имел дополнительного окна, не менял экраны, просто позвольте UAC сделать свое дело и продолжить оттуда (это программа конфигурации, поэтому она по-прежнему может использоваться как обычный пользователь со значком щита на копиикнопка).

Это происходит путем открытия отдельного приложения (другого, сделанного невидимым, как в msiexec) в качестве администратора, затем новое делает свое дело и отправляет обратно отчеты о ходе выполнения через SendMessage,Это работает нормально, но оказывается, что SendMessage работает только в одном направлении между приложениями администратора / не администратора.Перенаправление StandardInput не будет работать, потому что для этого требуется отключение ShellExecute, а для «runas» необходимо включение ShellExecute.

Я не хочу использовать файл, потому что это будет медленным и создает угрозу безопасности(Я отправлял код ключа вместе с сообщениями CopyData, которые раньше содержали команды).Может ли быть другой способ перенаправить StandardInput / Output?Как MSI это делает?

Я использую C # для этого.

1 Ответ

0 голосов
/ 04 мая 2012

Я собирался предложить трубы, как Саймон.

Одна из хитростей заключается в том, что процесс с более высокой целостностью должен создать канал и пометить его со средним обязательным уровнем целостности , чтобы процесс средней целостности мог получить к нему доступ.

...