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


В работе любого системного администратора иногда встаёт задача запуска программы от имени другого пользователя. В *NIX системах с этим всё просто. А как с этим делом в операционных системах семейства Windows?

Начиная с Windows 2000 в этой ОС появилась новая служба "RunAs". С её помощью провести запуск программы от имени другой учетной записи довольно легко и любой, кто хоть чуть интересовался этим, мог самостоятельно разобраться что к чему: нажимаешь Shift (в Windows 2000) + щелкаешь мышью по программе или ярлыку и выбираешь пункт меню "Запуск от имени...", указываешь нужные логин и пароль и - вуаля - программа запускается с правами другого пользователя. Просто и удобно. Для особых ценителей есть и консольный вариант программы:


C:\>runas

Использование команды RUNAS:

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]

/user:<имя пользователя> <программа>

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]

/smartcard [/user:<имя пользователя>] <программа>

/noprofile Не загружать профиль пользователя. Это приводит к более

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

/profile Загружать профиль пользователя.
Этот параметр установлен по умолчанию.

/env Использовать текущие параметры среды.

/netonly Учетные данные предназначены только для удаленного
доступа.

/savecred Использовать учетные данные, сохраненные пользователем.
Этот параметр не доступен в Windows XP Home Edition
и будет проигнорирован.

/smartcard Для указания учетных данных используется
смарт-карта.

/user <имя пользователя> должно быть в виде USER@DOMAIN или DOMAIN\USER

<программа> Командная строка для EXE. См. примеры ниже.

Примеры:
> runas /profile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"Мой файл.txt\""

Примечание: вводите пароль пользователя только тогда, когда он запрашивается.

Примечание: формат записи USER@DOMAIN несовместим с параметром /netonly.

Примечание: параметр /profile несовместим с параметром /netonly.

Но вот вам другая задача: как сделать так, чтобы программа всегда запускалась от некоего определенного имени? Как видно из листинга, такого параметра, как "пароль", нет. RunAs всегда запускается интерактивно, что вполне объяснимо с точки зрения безопасности.

Можно попробовать поизголяться с командной строкой и перенаправлением вывода, типа:

c:\>echo passwd | runas /user:MyUser CoolProgram.exe

но у меня в Windows XP SP2 этот фокус не прошел - программа запускалась от моего имени.

Но выход, конечно, есть. И имя ему CPAU. При помощи этой замечательной проги можно значительно расширить функционал RunAs.

Command line tool for starting process in alternate security context. Basically this is a runas replacement. Also allows you to create job files and encode the id, password, and command line in a file so it can be used by normal users.

или по-русски в моём переводе:

Утилита командной строки для запуска процесса с другим контекстом безопасности. В основном это замена runas. Также позволяет создавать командные файлы и шифровать идентификатор, пароль и команду запуска в файле, также может быть использована обычными пользователями.

Вот например, чтобы запустить CoolProgram.exe от имени пользователя MyUser с паролем passwd, нужно:

cpau -u MyUser -p passwd -ex "C:\Path\to\CoolProgram.exe" -lwop

Другие примеры можно найти, запустив справку:

cpau | more

В общем, утилита из разряда "admin tools". Рекомендую.

Ах да! Скачать программу можно отсюда.

Изображение пользователя Captain Flint.

Captain Flint

Captain Flint пишет:

Можно попробовать поизголяться с командной строкой и перенаправлением вывода, типа:

c:\>echo passwd | runas /user:MyUser CoolProgram.exe

но у меня в Windows XP SP2 этот фокус не прошел - программа запускалась от моего имени.

Говорят, если запихнуть пароль в файл (например, passwd.txt), и сделать так:

c:\> runas /user:MyUser CoolProgram.exe < passwd.txt

то всё должно заработать. Но надо проверять.

Изображение пользователя Captain Flint.

У меня на Win2k SP4

У меня на Win2k SP4 это не сработало.

Изображение пользователя rubtsovsk.

echo <Ваш пароль> | RUNAS

echo <Ваш пароль> | RUNAS /netonly /USER:<Ваш логин> "C:\windows\regedit.exe"

Изображение пользователя Captain Flint.

runas /savecred

Для виндов выше WinXP Home Ed. сработает такой вариант:

runas /savecred /user:DOMAIN\MyUser CoolProgram.exe

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

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

Изображение пользователя googloman.

Здарова

И что не говорите, а Google лучший поисковик в мире!

Изображение пользователя Captain Flint.

Эт к чему? Гугол подсказал

Эт к чему? Гугол подсказал линк на пост? :)

Изображение пользователя Антон.

Что не говори, Яндекс

Что не говори, Яндекс движется вперёд :) По нему и пришёл..

Изображение пользователя sanetter.

Captain Flint

Captain Flint пишет:

Использование команды RUNAS:

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]

/user:<имя пользователя> <программа>

RUNAS [ [/noprofile | /profile] [/env] [/netonly] ]

/smartcard [/user:<имя пользователя>] <программа>

/noprofile Не загружать профиль пользователя. Это приводит к более

быстрой загрузке приложения, но может стать причиной

неправильной работы некоторых приложений.

/profile Загружать профиль пользователя.

Этот параметр установлен по умолчанию.

/env Использовать текущие параметры среды.

/netonly Учетные данные предназначены только для удаленного

доступа.

/savecred Использовать учетные данные, сохраненные пользователем.

Этот параметр не доступен в Windows XP Home Edition

и будет проигнорирован.

/smartcard Для указания учетных данных используется

смарт-карта.

/user <имя пользователя> должно быть в виде USER@DOMAIN или DOMAIN\USER

<программа> Командная строка для EXE. См. примеры ниже.

Все это конечно хорошо, но как же безопасность? Наткнулся тут на программу RunAS, которая позволяет хранить пароль в зашифрованном виде + не даст запустить программу с другого компа.

Yandex cite