Повышение привилегий для UAC с использованием манифеста, откройте новое окно консоли - PullRequest
0 голосов
/ 25 февраля 2009

Я пишу консольный инструмент. Без повышения привилегий для поддержки UAC (файл манифеста), вызов этого инструмента из командной строки ( cmd.exe ) или файлового менеджера консоли (например, far.exe ) открывает его в том же окне , записывает свой вывод в то же окно и т. д.

Но теперь, когда файл манифеста был добавлен , новое окно консоли создается для инструмента после диалога запроса UAC, поэтому вывод инструмента записывается туда, и окно закрывается. Нет смысла в том, чтобы такой инструмент был консольным.

Как это исправить? Какие есть обходные пути?

1 Ответ

2 голосов
/ 25 февраля 2009

Насколько я знаю, нет способа "исправить" это. Это поведение разработано специально и предназначено для обеспечения того, чтобы на любой инструмент командной строки, который вы поднимаете, не влияли какие-либо изменения пути в командной строке без повышенных прав.

Идея состоит в том, что в обычный рабочий день люди запускают любые программы на своих машинах. Эти программы могут изменять путь для пользователя, так что папка, содержащая вредоносную программу с именем reg.exe, например, помещается в папку c: \ windows \ system32. Затем пользователь запускает инструмент администратора, который требует повышения прав, инструмент вызывает reg.exe без указания пути и вуаля - вы в собственности.

вы действительно должны подумать о том, чтобы вывести выходные данные инструмента в файл журнала. Кроме того, вы можете разработать инструмент из двух частей: консольного инструмента, который не требует повышения прав, и COM-сервера вне процесса, который требует повышения прав.

...