Любой пользователь Windows может запустить в своей сессии программу от имени другого пользователя с помощью Run As. Благодаря этому вы можете выполнить скрипт (.bat, .cmd, .vbs, .ps1), запустить исполняемый .exe файл или установку приложения (.msi, .cab) с полномочиями другого пользователя.
Например, вы можете использовать RunAs для установки программ или запуска программ/скриптов/MMC оснасток с правами администратора непосредственно в сессии обычного непривилегированного пользователя. Также через RunAs вы можете запустить приложение, настроенное в профиле другого пользователя (приложение загрузится с настройки из профиля другого пользователя).
За возможность запуска программ от имени другого пользователя в Windows отвечает служба Вторичный вход в систему (Secondary Log-on). Если эта служба остановлена, тогда все описанные методы runas работать не будут. Вы можете проверить, что служба запущена с помощью следующей команды PowerShell:
Get-Service seclogon
В Windows есть несколько способов запустить программу или процесс от имени другого пользователя.
- Запуск программы от имени другого пользователя из Проводника Windows (File Explorer)
- Команда Runas: запуск программ от имени из командной строки
- Использование RunAs в PowerShell
- Запуск программ от имени другого пользователя без ввода пароля
- Ярлык с запуском программы от имени другого пользователя
- В проводнике 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: запуск программ от имени из командной строки
В Windows есть консольная утилита runas.exe, которую можно использовать для запуска приложений от имени другого пользователя из командной строки. Также команда runas позволяет сохранить пароль пользователя в Windows Credential Manager, чтобы его не приходилось набирать каждый раз.
Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R). Для запуска Блокнота с правами учетной записи administrator выполните команду:
runas /user:administrator “C:\Windows\cmd.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: 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
Если вам нужно запустить программу через 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 можно легко украсть, поэтом лучше запретить использование сохраненных паролей (а тем более нельзя сохранять пароль привилегированной административной учетной записи).
Вы можете использовать команду 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”
При запуске такого ярлыка будет запрашиваться пароль пользователя.
Если в ярлыке 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:"
Еще один, наверное самый простой способ, не указали. В проводнике, правым кликом с зажатой клавишей Shift
Извиняюсь, не внимательно прочитал…
Доброго,
Как в W10 запустить «Диспетчер задач» и «параметры» (SystemSettings) от имени Администратора?
Диспетчер приложений можно найти поиском и через правый щелчок сделать запуск от имени администартора.
Панель настройки можно вызвать командой:
start ms-settings:
В теории можно запустить командную строку из под админа и выполнить эту команду.Не уверен, конечно, что так можно сделать из под простого пользователя.
Добрый день! не выходит сделать с помощью ключа savecred на билде 1803, тот же ярлык и та же программа на 1709 запускается. Пароль сохраняет но не запускает, никто с таким не сталкивался?
Программа расположена на локальном диске? Или вы запускаете ее из сетевой папки (через UNC путь и подмонтированной через net use)?
если запускаем из UNC, то сетевые диски не мапятся. Как сделать, чтоб сетевые диски мапились?
Сетевой диск не доступен в активной сессии? А вы видите его в сессии другого пользователя, из-под которого делали runas?
Возможно ли в windows xp, находясь в другой учётной записи, запустить программу от имени администратора так, чтобы она считала, что она запущена от вышеупомянутой другой учётной записи? То есть, предоставить ей привилегии администратора, но чтобы она сохраняла и считывала данные в другой учётной записи. Если знаете, подобно сделано в Linux. В ней, если предоставляешь программе права администратора, её настройки и данные сохраняются в учётной записи в которую ты вошел, а не в учетной записи администратора.
Мне это нужно для использования программы, которая удаляет мусор из реестра и диска после удаления программ.
В ней есть функция «установить и следить», позволяющяя установить программу с помощью этой программы и отслеживать, какие файлы и папки, а также изменения в реестре создаёт программа. Для этого требуется запускать её от имени администратора. Но если она запущена от имени администратора, то и программы она устанавливает тоже от имени администратора. И естественно, эти программы запускаются о имени администратора, что во-первых не безопасно, а во-вторых, они сохраняют все свои данные в учетной записи администратора, что мне не нужно, так как использовать я их буду не в учётной записи администратора. Конечно, я их после этого смогу запускать не в учетной записи администратора, но ведь данные, которые они сохранили при запуске в учетной записи администратора, в ней и останутся и так будет с каждой программой.
RUNAS [ [/noprofile Но это мало похоже, она будет запущенна всё равно от админа.
К сожалению не представляю как такое реализовать. Но и пробемы особой не вижу. В вашей ситуации возможно просто предоставить пользователю права админа.
Либо ставить программы под админом, а запускать от пользователя после настройки NTFS разрешений на папки. Все нормальные программы не привзвваются к учетным записям, из-под которых они установлены.
Ага, в том числе и вирусам. Я специально пользуюсь не адинистраторской учёткой, чтобы вирусам не дать шанса на проникновкение.
После установки программу требуется сразу запускать и настраивать, чтобы следящая за ней программа могла отследить, что она создаёт и изменяет после запуска. Я не идиот, чтобы запускать в админке только что установленную прогу.
Работая в XP не нужно беспокоится о вирусах 🙂 — система не поддерживается уже несколько лет. Последние истории с уязвимостями в smb1 (wannacry и not-a-petya должны были гарантированно сложить XP при попадании вируса в локальную сеть :). Будут еще…
В вашем случае вам нужен какой-то способ временного повышения прав пользователя до администратора при установке программы. У меня нет готовых ответов. из идей:
Т.е. перед установкой программы администратора запускает от себя некий скрипт, который добавляет пользователя в админы, запускает установку программы под пользователем (обязательно новая сессия) и сразу удаляет его из админов. Но запущенная сессия установки все еще привеллигированная.
@ Я специально пользуюсь не адинистраторской учёткой, чтобы вирусам не дать шанса на проникновкение.
Но в XP нет UAC.. и пользователь не спасёт.
Но тогда мне бы не приходилось запускать программы от администратора.
Подскажите, столкнулся с проблемой. Работаю не от администратора. Нужно запустить несколько программ от другого пользователя. Пытаюсь через runas запустить хотябы одну, но пароль от другой учётки не вводится
Укажите какую команду runas вы используете для запуска приложения от имени .другого пользователя. Пароль запрашивается? Пробовали сделать runas из Explorer ? ( Shift+right click по ярлыку и выбор пункта меню «Запуск от имени другого пользователя»
Ребят, чё за дела? Я не могу ввести логин или пароль переходя по ссылке скажите, как это сделать?
runas /user:admin «C:\Windows\notepad.exe»
А зачем вводить .\ перед именем пользователя?
«.\» перед именем учетки означает имя компьютера. Особенно это хорошо, когда имя компьютера не назначено вручную, а оставлено сгенерированным. Естественно, в RDP-подключении нужно указывать имя удаленного компьютера полностью
Понял, спасибо.
Столкнулся с тем, что в windows 10 запустить приложение от имени другого пользователя (администратора) очень проблематично. Запуск происходит только в первые минуты после запуска винды, а через некоторое время такая команда просто вешает систему и все. Выйти можно только через ctrl+alt+del. Проблема наблюдается на сборке 1903 и на предыдущей.
Тоже встречался с зависанием при runas на Windows 10 1803, после обновления до 1909 вроде нормально.
Еще заметил, что проблема проявлялась, если у доменного пользователя не создан локальный профиль (ни разу под ним не входили).
Есть ПК в домене, но не в сети.
Новый Доменный пользователь его получил именно в таких условиях.
Допустим пользователь зайдет ппод локальной неадминой учеткой.
Затем войдет в VPN
После чего выполнит команду Runas, под его доменной учеткой, то создастся ли его профиль?
Сможет ли он зайти уже под своей доменной учеткой?
Профиль должен создаться. По умолчани runas загружает профиль, можно указать это принудительно
RUNAS /profile
Либо можно наоборот запретить загрузку профиля RUNAS /noprofile
Как запустить программу от имени доменного пользователя на ПК не в домене?
В теории, если ваш компьютер настроен на DNS домена можно попробовать так:
runas /netonly /user:winitro\ivanovaa cmd.exe
Спасибо, сработало!
Запуск панелей управления в сеансе обычного пользователя с правами администратора не работает. Все равно приходится полностью входить в сеанс с правами пользователя. Например, везде пишут чтоб удалить программу достаточно использовать команду вида:
runas /user:domain\username «control.exe appwiz.cpl»
Оно запускается, но привелегий админимстратора все равно не появляется. В чем может быть проблема?
Да есть такая проблема, это UAC. По идее он должен запрашивать у вас пароль при запросе превышений привелегий. У вас UAC как-то настраивается специально?
Тоже думал что UAC, он видимо отключен. Пароль запрашивается только в командной консоли, запрос пароля от UAC не появляется.
Добрый день.
А можно сделать как-то, чтобы после загрузки производилась автоматическая авторизация всех пользователей на ПК, можно поочередно, чтобы все профили подгрузились и в них выполнился автозапуск, и программы запустившиеся там остались работать? Или запустить программы, непосредственно в среде пользователя? Чтобы ручками не надо было заходить в пользователя1 -> сменить пользователя -> вход в пользователь2 -> сменить пользователя -> вход в спользователя3 -> сменить пользователя и т.д. ЕСть такое решение?
[url=https://ibb.co/h2TS3fZ][img]https://i.ibb.co/h2TS3fZ/1.jpg[/img][/url]
В теории можно попробовать сделать логон скрипт, которые делает runas каждого пользователя и запуск определенной программы.
Добрый день!
Может немного не в тему, как через bat файл добавить несколько строк в файл \etc\services.
Строки добавить могу, но не могу сделать так, чтобы при повторном запуске этого bat файла строки не добавлялись повторно (делаю это для gpo).
Пример добавления трех строк:
@echo off
echo msR 3100/tcp # Message Server Port >> C:\Windows\System32\drivers\etc\services
echo msP 3100/tcp # Message Server Port >> C:\Windows\System32\drivers\etc\services
echo msH 3100/tcp # Message Server Port >> C:\Windows\System32\drivers\etc\services
Пример добавления с исключением но только для одной строки:
@echo off
IF EXIST «%TEMP%\editservice.ok» goto end
echo msR 3100/tcp # System Server Port >> C:\Windows\System32\drivers\etc\services
echo row added >> %TEMP%\editservice.ok
:end
exit
На PowerShell подобное делал, не на bat…
https://winitpro.ru/index.php/2019/07/10/zablokirovat-sajty-windows-powershell/
Добрый день.
Есть доменная машина на windows 10 20h2.
Машина домен не видит. Локальный админ включен и работает.
Включен UAC.
Подключаюсь к машине через teamviewer. Выполняю запуск консоли от админа.
TV не может отобразить запрос пароля.
Хорошо. Запускаю PoSh от пользователя, в консоли запускаю блокнот от админа.
Открываю файл хостс, редактирую, но при сохранении оказывается, что блокнот запущен без привилегий.
runas /user:администратор «notepad C:\windows\system32\drivers\etc\hosts»
start-process notepad -cred администратор
Как же так?! Может кто-нибудь сталкивался с подобными?
Было подобное вы при подключении можете выбрать авторизацию на уровне виндуз а не TV?
Я подключаюсь в сеанс пользователя.
Как сделать запуск от имени другого администратора? Т.е. выполнив вход в систему под пользователем, входящим в группу локальных администраторов, сделать запуск от имени другого пользователя, который тоже входит в группу локальных администраторов на этом компьютере. Бывает нужно для запуска командлетов в Powershell под определенной сервисной учетной записью, при этом для выполнения требуются повышенные привилегии.
Попробуйте такой способ. Запускаете cmd с правами иминистратора и из нее вызывает запуск новой cmd уже под другим администратором. Вторая сессия будет запущена также с elevated правами:
runas /netonly /user:admin2 cmd.exe
Или вариант с PowerShell:
Start-Process powershell -Credential domain\admin2 -ArgumentList '-noprofile -command &{Start-Process "cmd.exe" -verb runas}'
Отличный способ, спасибо!
для подключения к сетевой папке под другим пользователем из графического окна explorer, нужно настроить параметр реестра, который даст ввести учетные данные другого пользователя:
Run regedit.exe elevated.
Take ownership of HKEY_CLASSES_ROOT\AppID{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2} registry key.
Give yourself Full control rights on key and its values, because owner usually doesnt have full rights when you take ownership
Rename the RunAs value to _RunAs.
Create a new shortcut on your Desktop for C:\Windows\System32\runas.exe.
Name it something like Admin-Explorer.
Right-click the new shortcut and click Properties.
Change the target to: C:\Windows\System32\runas.exe /noprofile /user:\ «c:\windows\explorer.exe /separate»
(Optional) Change the icon.
(Optional) Pin to taskbar.
After that you just run icon enter password for user . You can browse you shares now with different username
При попытке запуска программы получаю такое сообщение:
Ошибка RUNAS: Не удается запустить
5: Отказано в доступе.
Что нужно сделать, чтобы доступ появился?
Прошу подсказать.
При запуске ярлыка по сценарию runas /user:admin /savecred не дает ввести пароль. Просто не отображается в окне. Предлагает ввести, мигает строка ввода, но цифры не отображаются. Пробовал неоднократно, также не дает вставить скопированный пароль.
В чем может быть дело?
Заранее благодарен.
Так это нормально, так и есть. Просто продолжаете ввод пароля, потом Enter и все.
C:\Windows\System32\runas.exe /user:contoso.local\login.admina «cmd /c start c:\progra~1\update~1\administrationsnapin\wsus.msc»
так я запускаю WSUS от имени другого пользователя
Здравствуйте!
В Win 10 не удаётся запустить программу со щитом на значке через runas от пользователя «Administrator», при этом от пользователя «Администратор» программа запускается. Другие программы (cmd, блокнот..) запускаются без проблем. С шифтом и выбором от другого пользователя — работает.
Победимо это?)
Благодарю.
Использую такой вариант
$credentials = Get-Credential
$TC = «C:\Program Files\totalcmd\TOTALCMD64.EXE»
Start-Process -PassThru -FilePath powershell -Credential $credentials -ArgumentList ‘-noprofile -command &{Start-Process «C:\Program Files\totalcmd\TOTALCMD64.EXE» -wait -verb runas}’
и он не запускает TC
но для dsaс.exe этот вариант работает без проблем. Можете подсказать что не так с TC?
$credentials = Get-Credential
$AD = «dsac.exe»
Start-Process -PassThru -FilePath powershell -Credential $credentials -ArgumentList ‘-noprofile -command &{Start-Process ‘, $AD, ‘ -Wait -verb runas}’
ошибся.
вариант для запуска ТС
$credentials = Get-Credential
$TC = «C:\Program Files\totalcmd\TOTALCMD64.EXE»
Start-Process -PassThru -FilePath powershell -Credential $credentials -ArgumentList ‘-noprofile -command &{Start-Process $TC -wait -verb runas}’