Когда вы запускаете скрипт от имени администратора, все прописанные в нём команды также будут выполнены с администраторскими правами. Это же касается запускаемых из скрипта приложений и командных файлов. А теперь представьте, что в скрипте у вас прописана команда запуска программы, предоставление полных прав которой нежелательно. Как быть в этом случае? Не разбивать же командный файл на две части, да это и не всегда возможно.
Использование таких инструментов как RunAsInvoker тут тоже вряд ли поможет, поскольку скрипт уже получил административный токен.
И всё же решение существует.
В таких случаях на роль посредника можно пригласить самый обычный Проводник Windows, который по умолчанию всегда запускается с обычными правами.
Если при этом в качестве аргумента ему передать путь к исполняемому файлу программы, то последняя тоже запустится с правами пользователя. Как и полагается дочернему процессу.
Это можно легко продемонстрировать на примере запуска командной строки из PowerShell, открытой с правами администратора.
Чтобы открыть командную строку в отдельном окне, выполняем в PowerShell команду start cmd. Обратите внимание, что командная строка запустилась с теми же правами, что и консоль PowerShell.
Теперь подключим сюда Проводник и посмотрим, что получится.
Выполняем команду start explorer C:\Windows\System32\cmd.exe и видим, что на этот раз командная строка запустилась с обычными правами пользователя, на что указывает отсутствие в заголовке упоминания об администраторе.
Добавить комментарий