Пакетный файл: сбросить повышенные привилегии (выполнить команду как оригинальный пользователь)

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

Можно ли это сделать?

Ответ 1

Вы можете запустить команду с ограниченными правами с помощью:

runas /trustlevel:0x20000 "YourCommandHere"

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

Если вы хотите запустить более одной команды с ограниченными правами, вы можете поместить их в отдельный командный файл и запустить его с помощью:

runas /trustlevel:0x20000 "cmd /C PathToYourBatchFile"

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

Обратите внимание, что 0x20000 - это уровень доверия стандартных пользователей. Вы можете перечислить другие доступные уровни доверия, запустив

runas /showtrustlevels

Ответ 2

1. Это все еще привилегированная программа (даже ограниченная) в диспетчере задач с помощью этой команды:

runas /trustlevel:0x20000 <cmd>

2. Вы можете попробовать другой способ, который сделает его непривилегированным в диспетчере задач:

runas /savecred /user:%username% <cmd>

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

3. Используйте explorer.exe для запуска программы:

explorer.exe <cmd>

Exploere.exe не будет принимать аргументы для cmd, вы можете создать файл временного сценария и запустить его с помощью explorer.exe, если нужны аргументы.