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

2024-05-09 10:16
83
Ця стаття на мовах: UA / RU

Стаття у розділах:

Десктопні ОС

Зміст

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

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

Get-Service seclogon

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

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

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

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

Примечание.

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

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

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

Команда RunAs: запуск программ от имени другого пользователя из командной строки

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

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

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

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

runas /user:”user test” notepad.exe

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

После этого должна открыться ваша программа. В моем случае это командная строка (cmd). В заголовке окна будет указано Запущено от имени 

CompName\username:

Например, вы можете открыть Панель управления от имени другого пользователя с помощью следующей команды:

runas /user:admin control

Если вам нужно запустить программу от имени доменного пользователя, используйте формат имени 

UserName@DomainName 

или 

DomainName\UserName.

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

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

Введите пароль для пользователя corp\server_admin:

Попытка запуска C:\Windows\notepad.exe C:\tmp\2871997x64.txt от имени пользователя "corp\server_admin" ...

Если вы указали несуществующее имя пользователя или неверный пароль, появится ошибка:

RUNAS ERROR: Unable to run – yourcommand
1326: Имя пользователя или пароль неправильные.

Или

RUNAS ERROR: Unable to acquire user password

Иногда необходимо запустить программу от имени доменного пользователя с компьютера, который не добавлен в домен Active Directory. В этом случае используйте такую команду (при условии, что в сетевых настройках вашего компьютера указан 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

Если вам нужно запустить программу через 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 под этим же пользователем с ключом /savecred Windows автоматически получит сохраненный пароль из Credential Manager, и не будет запрашивать его повторно.

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

RunDll32.exe keymgr.dll,KRShowKeyMgr

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

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

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

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

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

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

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

runas /user:pcinfo.priv\pcinfo “C:\Windows\notepad.exe”

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

Если в ярлык 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).

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

По умолчанию в 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

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

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

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

Get-AppxPackage|select Name

Вы можете найти конкретную программу:

Get-AppxPackage|where {$_.Name -like '*название*'} |select Name

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

runas /user:пользователь "explorer.exe MicrosoftTeams:"


Сподобалась стаття? Читайте нас в телеграм