Как удалить сохраненный пароль в команде Runas
Сохранив единожды пароль от учетной записи в команде runas, вы можете в дальнейшем запускать программы, не вводя его снова. Однако вам может потребоваться заблокировать возможность запускать программы от имени другой учетной записи пользователя компьютера с использованием сохраненного пароля в runas.
Чтобы удалить сохраненный пароль, выполните «Пуск» ⇒ «Панель управления» ⇒ «Учетные записи пользователей и семейная безопасность» ⇒ «Диспетчер учетных данных».
В разделе «Учетные данные Windows» (интерактивный вход в систему) удаляете не нужные больше записи из хранилища.
[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет
(с) Вася Ложкин.
К сожалению, в работе сисадмина нет-нет да и приходится разрешать пользователям запускать всякий софт с админскими правами. Чаще всего это какие-нибудь странные китайские программы для работы с оборудованием. Но бывают и другие ситуации вроде небезызвестного bnk.exe.
Попробуем разобрать решения, которые позволят и программу запустить, и безопасника с финансистом не обозлить.
Запуск от имени другого пользователя в меню Пуск
До Windows 10 в меню пуск существовала возможность, не прибегая ни к каким манипуляциям осуществить запуск от имени другого пользователя. Открытие приложения осуществлялось с выбором соответствующего задаче параметра. В Windows 10 для отображения контекстного меню с такими параметрами, необходимо:
- (+) + gpedit.msc +
- Проследовать Конфигурация пользователя -> Административные шаблоны -> Меню «Пуск» и панель задач.
- Найти “Показывать команду «Запуск от имени другого пользователя» при запуске”.
- Найденному параметру групповой политике задать состояние «Включено».
- (+) + gpupdate /force +
Второй способ для отображения контекстного меню «Запуск от имени другого пользователя» в меню «Пуск» Windows 10 – воспользоваться редактором реестра:
- (+) + regedit +
- Зайти в раздел HKEY_CURRENT_USER \ Software \ Policies \ Microsoft \ Windows \ Explorer
- Параметру ShowRunAsDifferentUserInStart поменять значение на 1.
- Перезагрузить компьютер.
После пункт «Запуск от имени другого пользователя» появляется в «Дополнительно», а необходимость нажимать пропадает.
RunAs из коробки
В системе есть родная утилита runas, позволяющая выполнять задачу запуска от другого имени, однако пользоваться ей нужно осторожно и в целях безопасности её нельзя применять для запуска программ с повышенными привилегиями, но можно наоборот — администратору запускать программы с правами обычного пользователя, хотя технически возможны оба варианта. Почему так? Параметр /savecred позволяет сохранить пароль для пользователя, от имени которого запускается программа, в профиле пользователя, который запускает программу. Однако этот же сохранённый пароль RunAs использует и для запуска любых других программ, запуск которых может инициировать пользователь, у которого сохранён пароль.
Вывод — использовать родной runas в составе системы для повышения прав на постоянной основе (с сохранением пароля) категорически нельзя, эта уязвимость должна быть очевидна каждому сисадмину. Да и без сохранения пароля вводить пароль администратора под ограниченным пользовательским сеансом не рекомендуется, если там заранее не были предприняты меры предосторожности, которые не позволяют запускать произвольные программы (SRP, AppLocker), иначе пользователь может запросто перехватить пароль. А мы переходим к неочевидным уязвимостям.
Как работает RunAs и аналоги
Получение учётных данных администратора происходит по следующей цепочке:
Пользователь с ограниченными правами запускает ярлык, в котором хорошо зашифрованы данные для запуска программы.
RunAs или его аналоги проверяют корректность шифра и целостность программы, затем извлекают данные и в открытом виде передают их функции CreateProcessWithLogonW.
В это же время API-мониторинг перехватывает данные, переданные функции в качестве параметров, чем делает бессмысленным шифрование пароля и полностью компрометирует учётные данные администратора.
Запуск программы от имени другого пользователя из Проводника Windows (File Explorer)
В появившемся окне нужно указать имя и пароль пользователя, под чьей учетной записью нужно запустить программу и нажать кнопку ОК.
Откройте Диспетчер задач и убедитесь, что приложение запущенно под указанным пользователем.
Есть ли альтернативы?
Они как бы и есть, и их как бы нет. На данный момент мне известно об одной — RunAsRob, которая использует другой метод: вместо запуска программы от имени другого пользователя она по заранее сформированному списку разрешённых программ временно выдаёт права администратора запускаемой программе посредством службы, работающей от имени системы. Благодаря такому подходу исключается утечка учётных данных, а разграничивать доступ к целевым программам нужно NTFS-правами. На данный момент я не могу её рекомендовать, так как она платная и глючная, однако за неимением других в крайнем случае можно использовать эту. Для неинтерактивных программ однозначно лучше использовать планировщик с вызовом по событию в журнале.
5 простых способов запуска программы в Windows 10 от имени другого пользователя
Во всех поддерживаемых версиях Windows существует возможность запускать в текущей сессии программы от имени другого пользователя ( Run As ). Благодаря этому можно выполнить скрипт (.bat, .cmd, .vbs, .ps1), исполняемый .exe файл или запустить установку приложения (.msi, .cab) с полномочиями другого пользователя (привелигированного).
К примеру, благодаря возможности использовать функционал Run As можно в сессии пользователя с ограниченными правами запустить установку программы или открыть нужную MMC оснастку управления компьютером под административной учетйно записью. Также возможность запуска программы «от имени» может быть полезна в ситуациях, когда приложение настроено под другим пользователем (и соответственно хранит свои настройке в чужом профиле, к которому у данного пользователя нет данных), а его нужно запустить с теми же настройками в сессии другого пользователя.
В Windows 10 есть несколько способов запустить процесс от имени другого пользователя.
У вас не разрешений на доступ к этой папке; нажмите Продолжить, чтобы получить постоянный доступ
При работе с проводником Windows (File Explorer) под учетной записью, которая добавлена в группу локальных администраторов (или даже под встроенным администратором Windows), довольно часто приходится открывать системные каталоги, профили других пользователей или редактировать защищенные системные файлы. При попытке открыть такой каталог или файл с помощью проводники в текущем контексте, появляется предупреждающее окно UAC о необходимости предоставить доступ и повысить привилегии.
Когда вы нажимаете Continue, UAC временно повышает привилегии вашего процесса explorer.exe и предоставляет вашей учетной записи NTFS права для доступа к данному каталогу (Full Control).
Известные проблемы такого подхода:
Все бы ничего, но после выполнения такой операции в NTFS разрешениях на папку явно прописывается ваша учетная запись. Хотя все, что вы хотели – просмотреть содержимое каталога, а не менять его ACL! А если у вас на сервере несколько администраторов? Тогда каждый из них при доступе к папке внесет строку доступа для своей учетки и ACL каталога будет постоянно расти.
В результате все программы, запущенные от вашей учетной записи в непривилегированном режиме, получат неограниченные права к папке. И даже если исключить эту учетную запись из группы администраторов, в NTFS разрешениях каталога останутся права Full Control.
Естественно, при активной работе с системными файлами или каталогами пользователей это выскакивающее уведомление UAC начинает раздражать. Т.к. отключать ради этого UAC совершенно не хочется, пришлось найти собственный способ запуска процесса Проводника (Exploler.exe)
Нет, не будет тебе прав
В системе Windows, начиная с Vista, появилась служба UAC, которая помимо прочего отвечает за запросы программ на повышение прав. Не все программы «переваривали» работу с этой службой. Поэтому в системе был доработан механизм совместимости приложений, позволяющий прямо задать программе ее поведение — запрашивать права или нет.
Простейшим вариантом работы с этим механизмом будет использование переменных среды.
Рассмотрим пример с редактором реестра. Действительно, запуская regedit.exe под администратором, мы получаем запрос на повышение прав:
Запрос повышение прав.
Если же мы запустим редактор реестра из консоли, предварительно поменяв значение переменной среды __COMPAT_LAYER на:
set __COMPAT_LAYER=RUNASINVOKER
То запроса UAC не будет, как и административных прав у приложения:
Бесправный редактор реестра.
С конкретным примером такой неприятной программы можно столкнуться при загрузке классификаторов банков из 1С с сайта РБК по ссылке http://cbrates.rbc.ru/bnk/bnk.exe. Если обновление классификаторов отдается на откуп самим пользователям и нет возможности поменять загрузку на bnk.zip (а современные 1С это поддерживают), то приходится придумывать костыли. Ведь bnk.exe — самораспаковывающийся архив, в котором зачем-то прописано «Требовать права администратора».
Поскольку ярлычками тут обойтись не выйдет, ведь 1С сама скачивает файл и запускает его, то придется применять тяжелую артиллерию — Microsoft Application Compatibility Toolkit.
Документация к ПО, как обычно, доступна на официальном сайте, загрузить можно как часть Windows Assessment and Deployment Kit. Сам процесс решения проблемы несложен.
Создаем исправление приложения.
Имя и издатель значения не имеют. Имеет значение только расположение файла — тут нужно указать реальный проблемный bnk.exe (где он будет лежать на самом деле — не важно).
Далее необходимо в списке исправлений выбрать RunAsInvoker.
Выбираем нужный фикс.
Все остальное оставляем по умолчанию, сохраняем базу данных. Должно получиться примерно так:
Созданный фикс для bnk.exe.
После этого достаточно будет установить базу данных, щелкнув по ней правой кнопкой и выбрав Install. Теперь пользователи смогут сами грузить классификаторы банков.
Все становится хуже, если приложению действительно нужны права админа. Тогда добавление прав на системные объекты и исправления не помогают.
Что делать, если отсутствует пункт «Запуск от имени другого пользователя»
В том случае, если у вас в контекстном меню отсутствует пункт Запуск от имени другого пользователя (Run as different user), откройте редактор групповых политик (gpedit.msc) и убедитесь, что в разделе Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пользовательский интерфейс учетных данных (Computer Configuration -> Administrative Templates -> Windows Components -> Credential User Interface) отключена (Не задана) политика Запрашивать достоверный путь для входа в учетную запись (Require trusted path for credential entry) .
Запуск программ от имени другого пользователя без ввода пароля
Вы можете сохранить пароль пользователя, который вы вводите. Для этого используется параметр /savecred.
После указания пароля он сохранится в диспетчере паролей Windows.
При следующем запуске команды runas под этим же пользователем с ключом /savecred Windows автоматически получит сохраненный пароль из Credential Manager, а не будет запрашивать его повторно.
Чтобы вывести список всех пользователей, для которых сохранены пароли, используется команда:
Однако использование параметра /savecred не безопасно, т.к. пользователь, в чьем профиле сохранен чужой пароль может использовать его для запуска любой команды под данными привилегиями, или даже сменить чужой пароль. Кроме того, сохраненные пароли из Credential Manager можно легко украсть, поэтом лучше запретить использование сохраненных паролей (а тем более нельзя сохранять пароль привилегированной административной учетной записи).
Запуск от имени другого пользователя в проводнике Windows
Пожалуй, это самый простой и быстрый способ открытия исполняемого файла, либо ярлыка с рабочего стола, а также с любого другого места, находящегося на локальном компьютере, или в сетевой папке через протокол SMB.
- C зажатой клавишей правой кнопкой мыши () щелкаем на нужный объект и в открывшемся меню выбираем «Запуск от имени другого пользователя» в английской локализации Windows будет «Run as different user».
- В выскочившем окне вбиваем имя и пароль учетной записи, от которой следует произвести запуск. Если пароля у учетной записи не существует, то произвести запуск .
Как запустить приложение от имени другого пользователя из командной строки
Запустить программу или скрипт от имени другого пользователя можно и из командной строки или ярлыка приложения. Кроме того, этот способ предполагает возможность сохранения пароля пользователя, чтобы его не пришлось набирать каждый раз. Для этого можно воспользоваться консольной утилитой runas.exe .
Запуск программ от имени другого пользователя (RunAs) в Windows
Любой пользователь Windows может запустить в своей сессии программы от имени другого пользователя (Run As). Благодаря этому можно выполнить скрипт (.bat, .cmd, .vbs, .ps1), исполняемый .exe файл или запустить установку приложения (.msi, .cab) с полномочиями другого, как правило привилегированного, пользователя .
Например, вы можете использовать RunAs для установки программ или запуска MMC оснасток с правами администратора непосредственно в сессии непривилегированного пользователя. Также возможность запуска программ “от имени” может быть полезна, когда приложение настроено под другим пользователем (и соответственно хранит свои настройки в чужом профиле, к которому у данного пользователя нет прав доступа), а его нужно запустить с теми же настройками в сессии другого пользователя.
В Windows 10 есть несколько способов запустить программу или процесс от имени другого пользователя.
Ну ладно, держи права
Казалось бы, самым очевидным решением для запуска нашего странного ПО выглядит использование встроенной утилиты Runas. Документация доступна на сайте Microsoft.
Ну, посмотрим, что из этого выйдет.
runas /savecred /user:Администратор "C:\Program Files\7-Zip\7zFM.exe"
Действительно, RunAs запустит 7zip с правами учетной записи «Администратор», спросит пароль и запомнит его. Потом ярлык с такой строкой запуска будет запускать 7zip под Администратором без вопросов.
Есть один существенный недостаток: пароль запоминается на уровне системы, и теперь, используя команду Runas, можно будет запускать абсолютно любую программу. Это мало чем отличается от прямого предоставления админских прав сотрудникам, так что использовать это решение не стоит.
Зато runas может быть полезен, когда сотрудник знает пароль администратора, но работает под ограниченной учетной записью (по идее так должен делать каждый системный администратор).
Если мы начали с консольных команд, то перейдем к более высокоуровневым скриптам. Интересное решение было предложено в статье «Планктонная Windows», где упомянутый выше Runas обвязывался js-скриптом и пропускался через обфускатор. У решения есть и очевидный минус — скрипт можно раскодировать.
Чуть более интересным методом в 2к20 являются возможности PowerShell и его работа с паролями. Подробнее можно почитать в материале «Защита и шифрование паролей в скриптах PowerShell».
Если вкратце: в PS работа с паролями производится через специальный тип данных SecureString и объект PSCredential. Например, можно ввести пароль интерактивно:
$Cred = Get-Credential
Затем сохранить пароль в зашифрованном виде в файл:
$Cred.Password | ConvertFrom-SecureString | Set-Content c:\pass.txt
И теперь использовать этот файл для неинтерактивной работы:
$username = "Domain\Администратор"
$pass = Get-Content C:\pass.txt | ConvertTo-SecureString
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $pass
К сожалению, файл этот можно использовать только на том ПК, на котором его создали. Чтобы этого избежать, можно сделать отдельный ключ шифрования. Например так:
$AESKey = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey)
$AESKey | out-file C:\password_aes.key
Теперь при помощи этого ключа пароль можно зашифровать:
$Cred.Password| ConvertFrom-SecureString -Key (get-content C:\password_aes.key
)| Set-Content C:\pass.txt
$pass = Get-Content C:\pass.txt | ConvertTo-SecureString -Key (get-content C:\password_aes.key)
К сожалению, с безопасностью дела обстоят так же печально: утащить пароль не составляет трудностей, если есть доступ к файлу с ключом шифрования и зашифрованным паролем. Да, можно добавить обфускации и скомпилировать скрипт в .exe вместе с нужными файлами. Но нужно понимать, что это — полумеры.
В свое время я использовал для решения подобных задач свой любимый AutoIt, где компилировал скрипт с командой RunAs и радовался… До тех пор, пока не узнал, что AutoIt (особенно старых версий) декомпилируется на раз-два.
Другим интересным вариантом может быть применение назначенных заданий — если создать назначенное задание от админского аккаунта, пользователю для работы будет достаточно его запуска. К сожалению, для интерактивной работы с приложением это решение не подходит.
На свете существует несколько сторонних решений, призванных решить задачу. Остановлюсь на парочке из них.
Пожалуй, одна из самых известных утилит — это AdmiLink, разработанная Алексеем Курякиным для нужд ядерной физики. Программа и принципы ее работы описаны на официальном сайте. Я, как обычно, позволю себе более краткое описание.
Программа состоит из трех модулей. AdmiLink — это графическое окно, где можно создать ярлык на нужное приложение (в принципе, в ряде случаев достаточно только его).
Основное окно программы.
Помимо непосредственно создания ярлыка (и да, запрос UAC тоже можно подавлять), есть и дополнительные функции вроде калькулятора, терминала и удобных настроек политик безопасности. Со всеми возможностями программы читателю предлагается разобраться самостоятельно.
Второй модуль называется AdmiRun и представляет из себя консольную утилиту. Она умеет запускать приложения от имени администратора, получив в качестве одного из параметров строку, созданную через AdmiLink. В строке шифруется имя пользователя и пароль, при этом участвует и путь к программе.
На первый взгляд все выглядит безопасно, но, к сожалению, код программ закрыт, и насколько можно доверять разработчику — вопрос.
Третий модуль — AdmiLaunch — отвечает за запуск окон в разных режимах, и он используется для запуска AdmiRun, если создавать ярлык через AdmiLink.
В целом, решение проверено годами и поколениями отечественных системных администраторов. Но добавлю и альтернативу из-за рубежа.
RunAsRob — довольно интересное ПО за авторством немецкого разработчика Оливера Хессинга (Oliver Hessing). В отличие от AdmiLink, ПО устанавливается как служба, запускаемая под привилегированной учетной записью (администратора или системы). Как следствие, подготовленный ярлык обращается к службе, которая уже в свою очередь запускает заданное ПО.
Особенность программы в том, что есть возможность авторизовать не только программы, но и папки (включая сетевые). А хранение настроек в реестре позволило добавить шаблоны групповых политик, примерно как мы писали в статье «Погружение в шаблоны и приручение GPO Windows». Благодаря этому при необходимости настройки можно применять прямо из Active Directory.
Основное окно программы.
Программа богато документирована на официальном сайте.
У этого автора есть еще и программа RunAsSpc, позволяющая запускать исполняемые файлы под правами другого пользователя, передавая учетные данные через зашифрованный файл.
Мне остается только добавить, что это ПО бесплатно только для личного использования.
Но учтите, что из программы, запущенной под административными правами, можно натворить бед. Например, запустить привилегированную командную консоль через диалог Файл — Открыть.
Запускаем cmd.exe прямо из редактора реестра.
Немного защититься помогут политики запрета контекстного меню и прочих диспетчеров задач, часть из которых может настроить AdmiLink. Но в любом случае следует быть осторожным.
А вам приходилось городить странные костыли? Предлагаю делиться историями в комментариях.
Включить пункт “Запуск от имени другого пользователя” в контекстном меню проводника Windows
Как добавить пункт “Запуск от имени” для программ в меню Пуск?
Осталось обновить групповые политики (gpupdate /force) и убедиться, что у программ в меню Пуск появится новое контекстное меню Дополнительно -> Запуск от имени другого пользователя.
Еще один, наверное самый простой способ, не указали. В проводнике, правым кликом с зажатой клавишей Shift
Доброго,
Как в W10 запустить «Диспетчер задач» и «параметры» (SystemSettings) от имени Администратора?
Диспетчер приложений можно найти поиском и через правый щелчок сделать запуск от имени администартора.
Панель настройки можно вызвать командой: start ms-settings: В теории можно запустить командную строку из под админа и выполнить эту команду.
Не уверен, конечно, что так можно сделать из под простого пользователя.
Добрый день! не выходит сделать с помощью ключа savecred на билде 1803, тот же ярлык и та же программа на 1709 запускается. Пароль сохраняет но не запускает, никто с таким не сталкивался?
Программа расположена на локальном диске? Или вы запускаете ее из сетевой папки (через UNC путь и подмонтированной через net use)?
если запускаем из UNC, то сетевые диски не мапятся. Как сделать, чтоб сетевые диски мапились?
Сетевой диск не доступен в активной сессии? А вы видите его в сессии другого пользователя, из-под которого делали runas?
Возможно ли в windows xp, находясь в другой учётной записи, запустить программу от имени администратора так, чтобы она считала, что она запущена от вышеупомянутой другой учётной записи? То есть, предоставить ей привилегии администратора, но чтобы она сохраняла и считывала данные в другой учётной записи. Если знаете, подобно сделано в Linux. В ней, если предоставляешь программе права администратора, её настройки и данные сохраняются в учётной записи в которую ты вошел, а не в учетной записи администратора.
Мне это нужно для использования программы, которая удаляет мусор из реестра и диска после удаления программ.
В ней есть функция «установить и следить», позволяющяя установить программу с помощью этой программы и отслеживать, какие файлы и папки, а также изменения в реестре создаёт программа. Для этого требуется запускать её от имени администратора. Но если она запущена от имени администратора, то и программы она устанавливает тоже от имени администратора. И естественно, эти программы запускаются о имени администратора, что во-первых не безопасно, а во-вторых, они сохраняют все свои данные в учетной записи администратора, что мне не нужно, так как использовать я их буду не в учётной записи администратора. Конечно, я их после этого смогу запускать не в учетной записи администратора, но ведь данные, которые они сохранили при запуске в учетной записи администратора, в ней и останутся и так будет с каждой программой.
К сожалению не представляю как такое реализовать. Но и пробемы особой не вижу. В вашей ситуации возможно просто предоставить пользователю права админа.
Либо ставить программы под админом, а запускать от пользователя после настройки NTFS разрешений на папки. Все нормальные программы не привзвваются к учетным записям, из-под которых они установлены.
возможно просто предоставить пользователю права админа.
Ага, в том числе и вирусам. Я специально пользуюсь не адинистраторской учёткой, чтобы вирусам не дать шанса на проникновкение.
Либо ставить программы под админом, а запускать от пользователя после настройки
После установки программу требуется сразу запускать и настраивать, чтобы следящая за ней программа могла отследить, что она создаёт и изменяет после запуска. Я не идиот, чтобы запускать в админке только что установленную прогу.
Но тогда мне бы не приходилось запускать программы от администратора.
Подскажите, столкнулся с проблемой. Работаю не от администратора. Нужно запустить несколько программ от другого пользователя. Пытаюсь через runas запустить хотябы одну, но пароль от другой учётки не вводится
Укажите какую команду runas вы используете для запуска приложения от имени .другого пользователя. Пароль запрашивается? Пробовали сделать runas из Explorer ? ( Shift+right click по ярлыку и выбор пункта меню «Запуск от имени другого пользователя»
А зачем вводить .\ перед именем пользователя?
«.\» перед именем учетки означает имя компьютера. Особенно это хорошо, когда имя компьютера не назначено вручную, а оставлено сгенерированным. Естественно, в RDP-подключении нужно указывать имя удаленного компьютера полностью
Столкнулся с тем, что в windows 10 запустить приложение от имени другого пользователя (администратора) очень проблематично. Запуск происходит только в первые минуты после запуска винды, а через некоторое время такая команда просто вешает систему и все. Выйти можно только через ctrl+alt+del. Проблема наблюдается на сборке 1903 и на предыдущей.
Тоже встречался с зависанием при runas на Windows 10 1803, после обновления до 1909 вроде нормально.
Еще заметил, что проблема проявлялась, если у доменного пользователя не создан локальный профиль (ни разу под ним не входили).
Как запустить программу от имени доменного пользователя на ПК не в домене?
Да есть такая проблема, это UAC. По идее он должен запрашивать у вас пароль при запросе превышений привелегий. У вас UAC как-то настраивается специально?
Тоже думал что UAC, он видимо отключен. Пароль запрашивается только в командной консоли, запрос пароля от UAC не появляется.
В теории можно попробовать сделать логон скрипт, которые делает runas каждого пользователя и запуск определенной программы.
Добрый день!
Может немного не в тему, как через bat файл добавить несколько строк в файл \etc\services.
Строки добавить могу, но не могу сделать так, чтобы при повторном запуске этого bat файла строки не добавлялись повторно (делаю это для gpo).
Как же так?! Может кто-нибудь сталкивался с подобными?
Было подобное вы при подключении можете выбрать авторизацию на уровне виндуз а не TV?
Я подключаюсь в сеанс пользователя.
Как сделать запуск от имени другого администратора? Т.е. выполнив вход в систему под пользователем, входящим в группу локальных администраторов, сделать запуск от имени другого пользователя, который тоже входит в группу локальных администраторов на этом компьютере. Бывает нужно для запуска командлетов в Powershell под определенной сервисной учетной записью, при этом для выполнения требуются повышенные привилегии.
Запуск оснастки MMC консоли от имени другого пользователя
Аналогичным образом можно запустить любую другую оснастку (главное знать ее имя).
Ярлык с запуском программы от имени другого пользователя
Можно создать на рабочем столе ярлык, позволяющий запустить программу от имени другого пользователя. Просто создайте новый ярлык, в окне с адресом объекта которого укажите команду runas с нужными параметрами.
При запуске такого ярлыка будет запрашиваться пароль пользователя.
Если дополнительно указать в ярлыке runas параметр /savecred , то пароль будет запрошен только один раз. После этого пароль будет сохранен в Credential Manager и автоматически подставляться при запуске ярлыка от имени другого пользователя без запроса пароля.
Такие ярлыки довольно часто используются для запуска программ, которые требуют прав администратора для запуска. Однако есть более безопасные способы запуска программы без прав администратора, или отключения запроса UAC для определенного приложения.
Команда Runas для запуска программ от имени другого пользователя
Для часто запускаемых программ от имени другого пользователя, неудобно каждый раз нажимать Shift и щелкать правой кнопкой мыши, проще воспользоваться специальной встроенной командой Runas. Для этого создадим ярлык, который будет запускать нужную программу от имени другого пользователя компьютера. Как создать ярлык можно прочитать здесь. В поле «Объект» напишем следующую команду:
программа — имя исполняемого файла, который мы хотим запустить. Если исполняемый файл находится не в системных переменных окружения, необходимо указывать полный путь до него.
В случае если имя пользователя или путь программы содержат пробелы, нужно взять их в двойные кавычки по отдельности.
Сохраняем ярлык, теперь при его запуске будет появляться черное окно с просьбой ввести пароль. Внимание, при вводе пароля ничего не происходит, просто вводите его и нажимаете клавишу Enter .
Все хорошо работает, но вводить постоянно пароль быстро надоедает. На этот случай, команда Runas имеет специальный ключ /savecred . В случае его использования, пароль вводится только один раз при первом запуске, он сохраняется в недрах Windows и при последующих запусках подставляется автоматически. Вся команда выглядит следующим образом:
Внимание! Ключ /savecred не работает в Домашних версиях Windows.
Кажется вот оно счастье, однако есть определенные неудобства. Например, какая-либо программа отказывается запускаться в простой учетной записи. Вы запускаете ее вышеописанным способом, все замечательно. Теперь та же ситуация чуть под другим углом. Вы администратор компьютера, а например у вашего ребенка простая учетная запись и игра отказывается запускать под ним. Давать ему пароль администратора вы не намерены, поэтому вы создаете ярлык, прописываете ключ /savecred , вводите пароль первый раз и довольный потираете руки.
Дальнейшие события зависят от степени продвинутости человека, которому вы сделали такой ярлык. Если пользователь чайник в компьютерах, то можете спать спокойно, в противном случае, в один прекрасный день, он может додуматься поменять в ярлыке путь к исполняемому файлу на другой и сможет запускать другие программы от имени администратора.
Так же он получит доступ ко всем файлам на жестком диске компьютера, даже если доступ к ним запрещен его учетной записи, включая папки «Мои документы» других пользователей компьютера. Согласитесь, довольно серьезная дыра в безопасности компьютера при использовании команды Runas с ключом /savecred.
Выходом в данном случае будет сделать такие настройки безопасности, чтобы нужная программа запускалась от имени простого пользователя или использовать сторонние программы для запуска от имени администратора.
В случае если эти способы не устраивают, можно попытаться максимально затруднить возможность несанкционированного запуска пользователем других программ от имени другого пользователя компьютера. Для этого требуется выполнить несколько дополнительных действий.
Во-первых, и самое главное, не говорить ему, что программа запускается от имени другого пользователя. Правда он может сам узнать об этом в диспетчере задач.
Во-вторых, сделать запуск с помощью пакетного (batch) файла. Открываете текстовый редактор, например блокнот и пишете там строчку, которую писали в поле «Объект» ярлыка. Сохраняете его с расширение .bat. Теперь при запуске этого пакетного файла, точно так же выполнится команда, написанная в нем. Однако этого не достаточно, так как его содержимое можно посмотреть и изменить в простом текстовом редакторе.
Если в имени пользователя или пути к файлу есть русские буквы, то его нужно сохранить в кодировке DOS 866 или в начало bat файла на отдельной строке необходимо вставить chcp 1251.
В-третьих, сделать bat файл не читаемым, чтобы затруднить пользователю анализ, каким образом запускается программа. Для этого сконвертируем наш bat файл в привычный exe. Можно воспользоваться одной из программ конвертеров, например бесплатной программой «Bat To Exe Converter» или любой другой на ваш вкус. Запускаете программу и в поле «Batch file» указываете ваш bat файл. В поле «Save as» куда и под каким именем сохранить результат. Дополнительно для большей конспирации можно на вкладке «Versioninformations» в поле «Icon file» указать значок для нашего будущего exe-шника в формате ico. Остальные параметры можно не трогать. Когда все будет готово, нажимаете кнопку «Compile» и получаете свой exe файл.
Теперь открывать его в текстовом редакторе бесполезно. Копируете его в папку с запускаемой программой, называете как-нибудь похоже на название программы и делаете на него обычный ярлык на рабочем столе.
В-четвертых, последний штрих, выдающий в нем командный файл, это на секунду появляющееся черное окно на рабочем столе. Избавиться от него совсем простым способом не получится, но можно достаточно просто свести его заметность к минимуму. Достаточно в свойствах ярлыка на вкладке «Ярлык» выбрать пункт «Свернутое в значок», теперь только на панели задач будет появляться на мгновение окно командной строки.
Все, теперь если человек от которого вы хотите скрыть админский пароль является чайником или обычным среднестатистическим пользователем можете спать спокойно. Конечно, грамотный человек сможет узнать содержимое созданного нами exe-шника, но по большому счету это не требуется. Достаточно догадаться, что используется команда runas и просто создать свой ярлык для запуска нужной программы так что, несмотря на все ухищрения это поможет только от начинающего пользователя.
Запуск от имени другого пользователя
В ОС Windows существует возможность работая под одной учётной записью запускать приложение или апплет от имени другого пользователя. Ранее мы уже рассказывали о запуске приложений от имени администратора, т.е. с максимальными правами. Но стоит также рассказать о том, как запустить командную строку, редактор реестра или любое приложение от имени другого пользователя.
Запуск от имени другого пользователя не позволяет получить права на запись в системные области, в отличие от запуска от имени администратора.
Ну, и зачем тебе права?
Программа может запрашивать права администратора условно в двух случаях:
- Когда хочет получить доступ туда, куда «простым смертным» нельзя: например, создавать файлы в системных каталогах.
- Когда программу скомпилировали со специальным флагом «Требовать права администратора».
С первым случаем все понятно: берем в руки замечательную программу Марка Руссиновича Process Monitor, смотрим, что происходит, и куда программа пытается залезть:
Куда это лезет этот 7Zip?
И по результатам исследования выдаем права пользователю на нужный каталог или ветку реестра.
Сложнее, если случай клинический, и так просто выдать права не получится: например, программа требует сильного вмешательства в работу системы вроде установки драйверов. Тогда придется придумывать всякий колхоз, про который речь пойдет в последнем разделе статьи. Пока подробнее освещу второй случай — когда стоит флажок.
Если сильно упростить, то в специальном манифесте программы (к слову, установщики — это тоже программы) могут быть три варианта запуска:
- asInvoker. Программа запускается с теми же правами, что и породивший ее процесс (как правило, это explorer.exe c правами пользователя);
- highestAvailable. Программа попросит максимально доступные пользователю права (у администратора появится окно с запросом повышения UAC, у пользователя — нет);
- requireAdministrator. Программа будет требовать права администратора в любом случае.
Если разработчик твердо решил требовать права администратора, даже если они не нужны, то обойти это можно малой кровью.
Как в Windows 10 запустить Проводник с правами администратора
При попытке просмотра и изменения целого ряда системных папок и файлов система контроля учетных записей (UAC) запрашивает разрешение. Подобную же картину можно наблюдать, при попытке доступа к файлам, принадлежащим другой учетной записи пользователя. Все это говорит о том, что Проводник в Windows 10 по умолчанию работает с пониженными привилегиями. Чтобы обойти это ограничение, необходимо применить твик реестра.
В открывшемся окошке выполните команду regedit .
При этом будет запущен встроенный редактор реестра, но с более высокими правами. Разверните в нём следующую ветку:
В правой части окна редактора у вас будет параметр RunAs. Переименуйте его или удалите, не забыв на всякий случай сделать резервную копию ключа.
Чтобы изменения вступили в силу, перезагрузите компьютер.
После этого перейдите в расположение C:\Windows, кликните ПКМ по файлу explorer.exe и выберите в меню «Запуск от имени администратора».
Процесс должен быть запущен в отдельном окне с повышенными привилегиями.
AdmiLink и его армия
Попыток преодолеть небезопасность стандартного runas предпринято множество, тысячи их. Самые известные — AdmiLink, CPAU, Encrypted RunAs и другие. Всех их объединяет конечный способ запуска, который мы разберём далее. В целом алгоритм работы этих программ такой: берём имя и пароль пользователя, от имени которого будет выполняться запуск целевой программы (как правило с правами администратора), добавляем к нему путь и контрольную сумму исполняемого файла (чтобы его нельзя было подменить на произвольный), и всю эту информацию дико шифруем, чтобы расшифровать могла только авторская программа, и желательно только на том же компьютере. Проблема в том, что вся эта защита не имеет никакого смысла, поскольку имя и пароль администратора можно перехватить тогда, когда он уже будет расшифрован. Дополнительная проблема в том, что авторы этих программ об этом не подозревают и убеждают системных администраторов в безопасности своих разработок:
Так вот, AdmiLink — это очень неплохой «кирпич» в системе защиты, задачей которого является БЕЗОПАСНЫЙ ЗАПУСК программ. Безопасный запуск означает, что:
Пользователь не сможет узнать пароль Администратора через ярлык запуска.
Пользователь не сможет запустить не разрешенную Администратором программу, даже подменив исполняемый файл или командную строку в ярлыке.
Запуск программы от имени другого пользователя из Проводника (File Explorer)
Примечание . Если пункт меню « Запуск от имени другого пользователя » отсутствует, см. следующий раздел.
В появившемся окне нужно будет указать имя и пароль пользователя, под чьей учетной записью нужно запустить приложение и нажать кнопку ОК .
Важно . Запуск программы от имени другого пользователя возможен, если для него задан пароль. Использовать Run as для учетки с пустым паролем не получится.
Откройте Диспетчер задач и убедитесь, что приложение запущенно под указанным пользователем.
Как запустить проводник от имени администратора в Windows 10/Windows Server?
Вы можете завершить процесс explorer.exe из Task Manager или следующей командой в консоли PowerShell (обязательно запустите powershell.ex e с правами администратора):
Чтобы запустить процесс explorer.exe с правами администратора, воспользуйтесь командой:
Данные команды завершат процесс explorer.exe для текущего пользователя и запустят новый процесс, который унаследует повышенный маркер доступа, с которыми запущена консоль powershell.exe.
Проверим, что Проводник Windows теперь запущен в привилегированном режиме. Для этого откройте диспетчера задач (Task Manager) и перейдите на вкладку Details. Щелкните ПКМ по любой колонке, выберите Select columns и включите отображения столбца Elevated.
Как вы видите, у процесса explorer.exe теперь появился атрибут Elevated=Yes.
Теперь вы можете в File Explorer открыть любую системную папку или файл без предупреждений UAC. Кроме того, все дочерние процессы, запущенные из проводника, также будут обладать повышенными правами.
К примеру, это удобно когда нужно отредактировать файл hosts (c:\windows\system32\drivers\etc), открывая его блокнотом прямо из проводника, без необходимости открывать отдельный процесс notepad.exe с правами администратора или от имени другого пользователя.
Если вам часто нужно запускать explorer.exe в привилегированном режиме, можно создать на рабочем столе bat или ps1 файл с данными командами.
Когда вы закончите работу с защищенными папками, обязательно перезапустите explorer.exe в обычном режиме:
Как вы видите, теперь значение Elevated у процесса explorer.exe изменилось на No.
Данный трюк с запуском процесса проводника Windows с повышенными правами работает как в Windows Server 2016/2019, так и во всех билдах Windows 10.
tskill explorer & explorer
Команда Runas – запуск программ от имени другого пользователя из командной строки
В Windows есть консольная утилита runas.exe, которая используется для запуска приложений от имени другого пользователя из командной строки. Также команда runas позволяет сохранить пароль пользователя в Windows Credential Manager, чтобы его не приходилось набирать каждый раз.
Можно, например, открыть панель управления под другим пользователем:
Иногда нужно запустить программу от имени доменного пользователя с компьютера, который не добавлен в домен AD. В этом случае нужно использовать такую команду (при условии, что в сетевых настройках вашего компьютера указан DNS сервер, который может отрезолвить этот домен):
Если для запуска программы от другого пользователя не нужно загружать его профиль, используйте параметр /noprofile . При этом приложение запускается намного быстрее, но может вызвать некорректную работу программ, которые хранят данные в профиле пользователя.
Запуск Проводника Windows (File Explorer) с правами администратора
Запуск через утилиту Runas
Запустить исполняющий файл от имени другого пользователя возможно с помощью интерпретатора командной строки, через «Выполнить», либо просто через ярлык, воспользовавшись утилитой runas.
Пример запуска калькулятора через приложение «Выполнить»:
- – Создать – Ярлык
- В отрывшемся окне пишем:
Для того, чтобы утилита не спрашивала каждый раз перед запуском объектов пароль, можно добавить параметр /savecred в строку после runas. Пароль в этом случае запишется в Диспетчере учетных данных Windows. Пользоваться параметром /savecred не безопасно, особенно если сохранять данные привилегированного пользователя.