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


В работе любого системного администратора иногда встаёт задача запуска программы от имени другого пользователя. В *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
Internet Map Rambler's Top100 Rating All.BY Yandex cite