Как запустить программу с обычными правами из скрипта, работающего с привилегиями администратора

Когда вы запускаете скрипт от имени администратора, все прописанные в нём команды также будут выполнены с администраторскими правами. Это же касается запускаемых из скрипта приложений и командных файлов. А теперь представьте, что в скрипте у вас прописана команда запуска программы, предоставление полных прав которой нежелательно. Как быть в этом случае? Не разбивать же командный файл на две части, да это и не всегда возможно.

Использование таких инструментов как RunAsInvoker тут тоже вряд ли поможет, поскольку скрипт уже получил административный токен.

И всё же решение существует.

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

Если при этом в качестве аргумента ему передать путь к исполняемому файлу программы, то последняя тоже запустится с правами пользователя. Как и полагается дочернему процессу.

Это можно легко продемонстрировать на примере запуска командной строки из PowerShell, открытой с правами администратора.

Чтобы открыть командную строку в отдельном окне, выполняем в PowerShell команду start cmd. Обратите внимание, что командная строка запустилась с теми же правами, что и консоль PowerShell.

Start cmd

Теперь подключим сюда Проводник и посмотрим, что получится.

Выполняем команду start explorer C:\Windows\System32\cmd.exe и видим, что на этот раз командная строка запустилась с обычными правами пользователя, на что указывает отсутствие в заголовке упоминания об администраторе.

Start explorer

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *