Запуск програм від імені іншого користувача (RunAs) в Windows

2024-05-09 10:16
84
Ця стаття на мовах: 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

Іноді потрібно запустити програму від імені користувача домену з комп'ютера, який не доданий до домену AD. У цьому випадку використовуйте таку команду (за умови, що в мережевих налаштуваннях вашого комп'ютера вказаний DNS-сервер, який може розв'язати цей домен):

runas /netonly /user:pcinfo.priv\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 '*team*'} |select Name

Знайдіть ім'я потрібної програми у списку. Наприклад, для запуску вбудованого клієнта Microsoft Teams Chat від іншого користувача виконайте:

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


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