Пакетный файл: сбросить повышенные привилегии (выполнить команду как оригинальный пользователь)
У меня есть командный файл, который начинается с повышенных привилегий (мой установщик запускает его), но в какой-то момент мне нужно запустить команду в качестве исходного пользователя, который запустил мой установщик (т.е. отказаться от повышенных привилегий).
Можно ли это сделать?
Ответы
Ответ 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, если нужны аргументы.