Запуск программы, требующей прав администратора, с ограниченными правами

Отправлено 29 мар. 2015 г., 3:31 пользователем Anton Derbenev

Авторы некоторых программ либо слишком наглые, либо не очень умные, и такие программы требуют прав администратора даже когда они (права) не сильно и нужны.

Например, софт некоторых видеорегистраторов, используемых в компании, где я работаю. Или вот RaidCall, который я недавно установил (но вообще не рекомендую, та ещё хрень).

Довольно долго я искал способ, как избавиться от запроса повышения привилегий (и пароля администратора, если текущий пользователь – не админ).

На superuser.com есть вопрос по этому поводу, но все дельные ответы указаны прямо в вопросе. Предлагается два варианта: либо менять манифест в файле (но тогда изменится контрольная сумма, а некоторые программы её проверяют), либо запускать через Process Explorer: Run as Limited User (только GUI). Ещё один вариант нашел на technet.microsoft.com – использовать psexec.exe -l. Это то же самое, что и запускать через Process Explorer, но не требует ручных действий (можно сделать ярлык). Ирония в том, что запуск процесса с органиченными правами *требует прав администратора*.

Собственно, последний вариант можно слегка облагородить: администратор делает задачу на запуск через psexec в планировщике, добавляет разрешение для пользователя, который будет её запускать (c:\Windows\System32\Tasks), а у пользователя просто создаётся ярлык для запуска этого задания (schtasks /run /tn название).

Но и этот вариант далеко не идеальный: если запускающий пользователь – не тот, от чьего имени запускается задание, он не увидит окна программы. А если бы увидел, программа будет работать с профилем того, от чьего имени запущена через планировщик. Тем не менее, он вполне подходит для случаев, когда администратор хотел бы запустить с органиченными правами программу, которая требует прав администратора.

Порядок действий для запуска RaidCall:

  1. Сделать задание в планировщике Допустим, оно будет в папке LogicDaemon и назваться RaidCall.
    1. Поставить галочку "Запуск с максимальными привилегиями"

    2. Действие – запуск psexec.exe с параметрами -l -d "C:\Program Files (x86)\RaidCall.RU\raidcall.exe"

  2. В ярлыке для запуска:
    %SystemRoot%\System32\schtasks.exe /Run /TN "LogicDaemon\RaidCall"

Comments