dev
April 24

Runas - пишем скрипт для запуска исполняемых файлов Windows от имени другого пользователя

Всем привет! Сегодня мы с вами научимся писать свой первый простенький скрипт для командной строки Windows. В этой статье мы рассмотрим основные проблемы кодировок в CMD, команды вывода пользователей и фильтрации данных с помощью т.н. "конвейера", а также рассмотрим встроенную программу "runas"

Первым делом рассмотрим структуру нашего скрипта:

@echo off
chcp 65001
echo. & echo ---Текущее имя пользователя---
whoami
echo. & echo ---Имена всех пользователей---
chcp 866
echo.
wmic useraccount get name, status | find "OK"
echo. & echo --------------------
chcp 65001
echo. & set /p username="Введите имя пользователя: "
echo Выбран пользователь: %username%
set /p userpath="Перенесите сюда .exe приложение которое хотите запустить (не ярлык) и нажмите Enter: "
echo "Попытка запуска приложения..."
echo %username% %userpath%
runas /user:%username% %userpath%

Вот собственно наш код. Давайте подробнее изучим основные его строки.

chcp <номер кодировки> - отвечает за переключение кодировки в открытой cmd сессии. Это требуется для нормальной работы с кириллицей и латиницей, а также иными языками, плохо работающими на базовой Windows кодировке.

echo. - просто ставит enter в выводе в консоли, отображая ваше сообщение или результат выполнения команды на новой строке.

echo <ваше сообщение> - выводит сообщение на экран.

@echo off - убирает ваш ввод команд скрипта, что убирает лишний хлам в выводе в консоли.

set <имя переменной> <значение переменной> - сохраняет в памяти значение для заданной переменной. Если такой переменной нет, создает её и сохраняет в ней указанное значение.

set /p <имя переменной> <Placeholder - он же заполнитель текста> - дает возможность задать пользователю значение переменной с помощью ввода текста в CMD.

echo %имя_переменной% - выводит значение переменной. Использование %имя_переменной% в любом месте команд вставляет сохраненное значение переменной

runas /user:%username% %userpath% - запускает указанную программу от имени указанного пользователя.

whoami - вывод текущего пользователя с которого вы сидите

wmic useraccount - выводит в сыром виде все аккаунты

get name, status | find "OK" - фильтрует данные и выводит релевантные учетки.

Каков итог?

Теперь с помощью данного скрипта вы можете не меняя учетную запись запустить программу от имени другого пользователя. В ряде определенных случаев это бывает очень полезно, особенно когда вы на работе и нужно что-то запустить от имени админа, не выходя из рабочей учетки, но при этом классический метод запуска от имени админа заблокирован политикой безопасности.

Всё что нужно это:

1. Запустить скрипт

2. Выбрать нужного пользователя

3. Указать абсолютный путь в кавычках ИЛИ - просто перетащить EXE (важно, не ярлык) файл в консоль

4. Ввести пароль от выбранной учетки

5. Готово! Если прога поддерживает данную фичу, то всё успешно запустится и будет работать.

На этом всё. Такая вот простенькая и коротенькая статья, учащая базовым командам в cmd и написанию скриптов без всяких python и прочих зависимостей ^)