Запуск программ от имени другого пользователя (RunAs) в Windows

Любой пользователь Windows может запустить в своей сессии программу от имени другого пользователя с помощью Run As. Благодаря этому вы можете выполнить скрипт (.bat, .cmd, .vbs, .ps1), запустить исполняемый .exe файл или установку приложения (.msi, .cab) с полномочиями другого пользователя.

Например, вы можете использовать RunAs для установки программ или запуска программ/скриптов/MMC оснасток с правами администратора непосредственно в сессии обычного непривилегированного пользователя. Также через RunAs вы можете запустить приложение, настроенное в профиле другого пользователя (приложение загрузится с настройки из профиля другого пользователя).

За возможность запуска программ от имени другого пользователя в Windows отвечает служба Вторичный вход в систему (Secondary Log-on). Если эта служба остановлена, тогда все описанные методы runas работать не будут. Вы можете проверить, что служба запущена с помощью следующей команды PowerShell:

Get-Service seclogon

windows - служба вторичного входа в систему нужна для запуска от имени

В Windows есть несколько способов запустить программу или процесс от имени другого пользователя.

Запуск программы от имени другого пользователя из Проводника Windows (File Explorer)

Самый простой способ запустить программу из-под другого пользователя – воспользоваться графическим интерфейсом Проводника Windows (File Explorer). Просто найдите нужно приложение (или ярлык), зажмите клавишу Shift и щелкните по нему правой кнопкой мыши. Выберите пункт контекстного меню «Запуск от имени другого пользователя» (Run as different user).

Примечание. Если пункт меню «Запуск от имени другого пользователя» отсутствует, см. следующий раздел.

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

В появившемся окне Windows Security нужно указать имя и пароль пользователя, под чьей учетной записью нужно запустить программу и нажать кнопку ОК.

Примечание.

  • Если нужно запустить программу от имени пользователя Active Directory, нужно указать его имя в формате userPrincipalName ( [email protected] ) или samAccountName ( DomainName\UserName );
  • Если ваш компьютер добавлен в домен AD, то для запуска программы от имени локальной учетной записи пользователя ее имя нужно указать в формате: .\localusername .

runas different user

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

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

диспетчер задач windows видит, что процесс запущен от имени другого пользователя

Команда Runas: запуск программ от имени из командной строки

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

Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R). Для запуска Блокнота с правами учетной записи administrator выполните команду:

runas /user:administrator “C:\Windows\cmd.exe”

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

runas /user:”user test” notepad.exe

runas /user:admin

В отрывшемся окне появится приглашение «Введите пароль для admin», где нужно набрать пароль и нажать Enter.

Введите пароль для admin

Должно открыться ваше приложение. В моем случае это cmd. В заголовке окна указано Запущено от имени CompName\username :

cmd.exe заголовок запущено от другого имени

Можно, например, открыть панель управления под другим пользователем:

runas /user:admin control

Если нужно запустить программу от имени доменного пользователя, нужно использовать формат имени UserName@DomainName или DomainName\UserName .

Например, чтобы с помощью блокнота открыть текстовый файл от имени пользователя server_admin домена CORP, используйте команду:

runas /user:corp\server_admin “C:\Windows\notepad.exe C:\tmp\2871997x64.txt”

команда runas в windows под доменным пользователем

Введите пароль для corp\server_admin:
Попытка запуска C:\Windows\notepad.exe C:\tmp\2871997x64.txt от имени пользователя "corp\server_admin" ...
Если указали несуществующее имя пользователя или неверный пароль, появится ошибка:

RUNAS ERROR: Unable to run - yourcommand
1326: The user name or password is incorrect.

Или

RUNAS ERROR: Unable to acquire user password

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

runas /netonly /user:contoso\aaivanov cmd.exe

Если для запуска программы от другого пользователя не нужно загружать его профиль, используйте параметр /noprofile. При этом приложение запускается намного быстрее, но может вызвать некорректную работу программ, которые хранят данные в профиле пользователя.

Использование RunAs в PowerShell

Если вам нужно запускать программы/процессы от имени другого пользователя из PowerShell, вы можете использовать командлет Start-Process (управление процессами с помощью PowerShell). Сначала нужно запросить учетную запись и пароль пользователя:

$Cred = (Get-Credential)

Для запуска процесса от имени другого пользователя можно использовать:

Start-Process -FilePath "powershell.exe" -Credential $Cred

Либо можно запросить учетную запись и пароль интерактивно через Windows Security:

# "Run as Administrator"
Start-Process -FilePath "powershell.exe" -Verb RunAs
# Run as от другого пользователя
Start-Process -FilePath "powershell.exe" -Verb RunAsUser

powershell запуск процесса от другого пользователя start-process

Если вам нужно запустить программу через runas от имени другого администратора в привилегированном режиме (по умолчанию UAC запускает программу в not-elevated пользовательском контексте), можно использовать такую команду PowerShell:

Start-Process powershell -Credential winitpro\admin2 -ArgumentList '-noprofile -command &{Start-Process "cmd.exe" -verb runas}'

Или стороннюю утилиту ShelExec:

ShelExec /Verb:runas cmd.exe

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

Вы можете сохранить пароль пользователя, который вы вводите. Для этого используется параметр /savecred.

runas /user:admin /savecred “C:\Windows\notepad.exe”

После указания пароля он сохранится в диспетчере паролей Windows.

сохраненные паролья runas в windows в диспетчере учетных данных

При следующем запуске команды runas под этим же пользователем с ключом /savecred Windows автоматически получит сохраненный пароль из Credential Manager, и не будет запрашивать его повторно.

Чтобы вывести список всех пользователей, для которых сохранены пароли, используется команда:

RunDll32.exe keymgr.dll,KRShowKeyMgr

runas /user:admin /savecred - сохранние пароля в менеджере паролей

Однако использование параметра /savecred не безопасно, т.к. пользователь, в чьем профиле сохранен чужой пароль может использовать его для запуска любой команды под данными привилегиями, или даже сменить чужой пароль. Кроме того, сохраненные пароли из Credential Manager можно легко украсть, поэтом лучше запретить использование сохраненных паролей (а тем более нельзя сохранять пароль привилегированной административной учетной записи).

Примечание. Кроме того, ключ /savecred не работает в Home редакциях Windows.

Вы можете использовать команду RunAs для запуска mmc оснасток от имени другого пользователя. К примеру, если под другим пользователем нужно запустить оснастку Active Directory Users and Computers из набора инструментов администрирования RSAT, можно воспользоваться такой командой.

runas.exe /user:winitpro\kbuldogov "cmd /c start mmc %SystemRoot%\system32\dsa.msc"

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

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

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

runas /user:winitpro\kbuldogov  “C:\Windows\notepad.exe”

ялык рабочего стола для запуска программы от имени в windows

При запуске такого ярлыка будет запрашиваться пароль пользователя.

Если в ярлыке runas добавить параметр /savecred , то пароль будет запрошен только один раз. После этого пароль будет сохранен в Credential Manager и автоматически подставляться при запуске ярлыка от имени другого пользователя без запроса пароля.

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

В проводнике Windows отсутствует пункт “Запуск от имени другого пользователя”

Если в контекстном меню проводника Windows отсутствует пункт Запуск от имени другого пользователя (Run as different user), нужно проверить настройки двух параметров реестра Windows.

В Windows вы можете скрыть или показать в проводнике пункт меню RunAs с помощью двух параметров реестра:

  • Параметр HideRunAsVerb (тип REG_DWORD) в ветке реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer (1 – скрыть пункт runas, 0 – показать)
  • Параметр EnableSecureCredentialPrompting (REG_DWORD) в HKLM\ Software\Microsoft\Windows\CurrentVersion\Policies\CredUI (1 – скрыть, 0 – показать)

Если в Windows не отображается пункт Run as different user, проверьте значения этих параметров реестра и измените их на 0. В доменной среде вы можете распространить значения этих параметров реестра на компьютеры с помощью Group Policy Preferences.

Второму параметру реестра соответствует отдельная опция GPO.

Этой опции GPO соответствует параметр EnableSecureCredentialPrompting в ветке реестра HKLM\ Software\Microsoft\Windows\CurrentVersion\Policies\CredUI. Откройте редактор локальных групповых политик (gpedit.msc) и убедитесь, что в разделе Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пользовательский интерфейс учетных данных (Computer Configuration -> Administrative Templates -> Windows Components -> Credential User Interface) отключена (Не задана) политика Запрашивать достоверный путь для входа в учетную запись (Require trusted path for credential entry).

Запрашивать достоверный путь для входа в учетную запись (Require trusted path for credential entry) - политика

Как добавить пункт “Запуск от имени” для программ в меню Пуск?

По-умолчанию в Windows 10 у элементов меню Пуск (начального экрана) отсутствует возможность запуска приложений от имени другого пользователя. Чтобы добавить в контекстное меню пункт “Запуск от имени другого пользователя”, нужно включить политику Показывать команду «Запуск от имени другого пользователя» при запуске (Show “Run as different user” command onStart) в разделе редактора групповых политик (консоль gpedit.msc ) Конфигурация пользователя ->Административные шаблоны -> Меню Пуск и панель задач (User Configuration -> Administrative Templates -> Start Menu and Taskbar).

включить политику Показывать команду «Запуск от имени другого пользователя» при запуске

Либо, если редактор gpedit.msc отсутствует, создать в ветке реестра HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer ключ типа DWORD с именем ShowRunasDifferentuserinStart и значением 1.
New-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\CurrentVersion\Explorer" -Name ShowRunasDifferentuserinStart -Value 1 -PropertyType DWORD -Force

ShowRunasDifferentuserinStart - реестр

Осталось обновить групповые политики (gpupdate /force) и убедиться, что у программ в меню Пуск появится новое контекстное меню Дополнительно -> Запуск от имени другого пользователя.

windows 11 run as different uzer в стартовом меню пуск

Пункт “запуск от имени” отсутствует у Universal Windows Platform (UWP) приложения из Microsoft Store. Вы можете запустить UWP приложение от другого пользователя из командной строки с помощью runas.exe.

Выведите список приложений Microsoft Store на компьютере с помощью PowerShell:

Get-AppxPackage|select Name

Можно найти конкретное приложение

Get-AppxPackage|where {$_.Name -like '*team*'} |select Name

Найдите имя нужного приложения в списке. Например, для запуска встроенного клиента Microsoft Teams Chat от другого пользователя, выполните:

runas /user:user1 "explorer.exe MicrosoftTeams:"


Предыдущая статья Следующая статья


Комментариев: 47 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)