Запуск от имени другого пользователя и повышение уровня

24

В проводнике Windows я могу щелкнуть правой кнопкой мыши по исполняемому файлу и выбрать «Запуск от имени администратора», который запустит выбранный процесс с повышенными привилегиями, или я могу сдвинуть правой кнопкой мыши по исполняемому файлу и нажать «Запуск от имени другого пользователя», укажите имя пользователя и пароль, которые запустят процесс со стандартными привилегиями, используя указанный пользовательский контекст.

Как мне работать от имени другого пользователя И запускать в повышенном контексте? Прекрасным примером этого было бы открытие командной строки с повышенными правами с использованием другого пользовательского контекста, в котором в данный момент зарегистрирован пользователь.

Искусство
источник
Я думаю, что PowerShell start-processкоманда может сделать это.
Jiggunjer

Ответы:

22

Я не думаю, что такой вариант существует.

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

runas / netonly / user: YourUser cmd.exe

Ясс
источник
7
Или вы можете щелкнуть правой кнопкой мыши исполняемый файл, затем выбрать свойства> совместимость, а затем выбрать Уровень привилегий и установить флажок Запускать эту программу от имени администратора. Затем сдвиньте правой кнопкой мыши исполняемый файл и запустите от имени другого пользователя.
JamesTheDev
@NewProgrammerJames Хорошо, спасибо за вклад :)
Yass
@NewProgrammerJames Этот прием не работает с CMD напрямую на W2008R2 и выше, но возможна настройка пользовательского приложения.
Веспер
Это будет работать, даже если конечный пользователь не входит в группу администраторов?
jiggunjer
@jiggunjer Нет, насколько я знаю.
Ясс
11

Да, psexec абсолютно делает это.

Следующий пример работает чисто на Windows 8.1; запустите командную строку от имени администратора, а затем:

// -i makes the app interactive
// -h elevates the execution context 
// Omitting the password forces a secure prompt
psexec -u DOMAIN\user -i -h "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"
Пол Смит
источник
От Майка : Это работает для Windows 10!
fixer1234 24.12.15
7

Вы можете сделать это через PowerShell:

Start-Process powershell -Credential domain\differentUserName -ArgumentList '-noprofile -command &{Start-Process "TheApp.exe" -verb runas}'
Дарио Леон
источник
1

Я замечаю, что это очень старый вопрос, но приведенные ответы не идеальны, и он уже был очищен. Все существующие ответы требуют ввода архаичных команд и знания точного пути к вашему исполняемому файлу. Идеальный вариант сделал бы это возможным, используя тот же процесс, который вы уже использовали для повышения привилегий.

Если у вас установлена ​​не домашняя версия Windows (Vista до 10), вы можете использовать диспетчер политик безопасности, чтобы он предлагал вам вводить пароль всякий раз, когда происходит повышение прав. Это также дает вам возможность выбрать совершенно другого пользователя и ввести его пароль ... что приведет к запуску процесса с повышенными правами от имени пользователя .

Просто откройте меню «Пуск» и введите secpol.mscи нажмите Enter, чтобы запустить его (если оно доступно). Вы ищете Local Policies> Security Options> User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode> Prompt for credentials. В Vista есть аналогичная опция, в которой не упоминается «Режим одобрения администратором», но она делает то же самое.

Я думаю, что это гораздо более естественный вариант, чем предложенный здесь другой, и скорее напоминает gksudo на * nix. Но если ваша редакция Windows не содержит secpol.msc, вам нужно будет сделать некоторые попытки взлома реестра, чтобы включить ее.

Клифф Армстронг
источник
Я сделал это, и это не работает. Вместо этого он всегда запрашивает мой отпечаток, хотя я не настраиваю его аутентификацию по отпечатку пальца.
Ироэль
@iroel Это звучит отчетливо, как будто есть проблема конфигурации с подсистемами аутентификации ваших окон. Вы должны рассмотреть поиск SU для решения этой проблемы и, если вы ничего не нашли, рассмотрите возможность размещения его как вопроса. Все мои системы настроены таким образом, и ни одна из них не требует отпечатка пальца. В зависимости от учетной записи я аутентифицируюсь, так как они запрашивают либо пароль, либо пин-код.
Клифф Армстронг
Я использую отпечаток пальца для аутентификации. Это случается. 2 применимых решения: предоставить пользователю административные привилегии (но в данном случае это не имеет смысла), создать другого пользователя и установить отпечаток (используйте палец, который не зарегистрирован для определенного пользователя) и использовать этот палец, когда его просят повысить привилегия. Я использую последнее решение в этом случае. По крайней мере, это работает для меня.
Ироэль
Если вам предлагается ввести отпечаток пальца, либо вы настроили пользователя, в которого вы пытаетесь войти, чтобы потребовать отпечаток пальца, либо что-то не так с вашей установкой Windows. Полная остановка. Я использую эту настройку на трех разных компьютерах, и ни один из них не запрашивает отпечатки пальцев. Я установил это на десятках компьютеров для клиентов. Windows будет запрашивать контактный номер при входе пользователя с настроенным контактным номером и паролем для всех остальных пользователей. Он использует любой метод аутентификации, который вы настроили для этого пользователя.
Клифф Армстронг
0

Я обнаружил, что если я вхожу в систему под учетной записью запуска от имени, вы можете установить флаг «Запускать эту программу от имени администратора» на странице свойств / совместимости. Затем войдите на вторичную учетную запись и выполните смену, нажав кнопку «Выполнить», чтобы открыть ее с правами администратора.

Алан Томпсон
источник
Это звучало как отличный вариант, но в свойствах cmd.exe не было страницы совместимости.
Сандра