RunAs
Запускает внешнюю программу от другого пользователя.
RunAs ( "username", "domain", "password", logon_flag, "program" [, "workingdir" [, show_flag [, opt_flag ]]] )
Параметры
username | Имя пользователя. |
domain |
Домен для аутентификации. |
password |
Пароль пользователя. |
logon_flag |
0 - интерактивный вход без профиля. 1 - интерактивный вход с профилем. 2 - только сетевые учётные данные. 4 - наследование переменных сред процесса вместо пользовательских. |
program |
Полный путь к программе (EXE, BAT, COM или PIF) для запуска (см. примечания). |
workingdir |
[необязательный] Рабочий каталог. Если не указан, то используется значение @SystemDir. Это не путь к программе. |
show_flag |
[необязательный] Режим отображения запускаемой программы: @SW_HIDE = скрытое окно (или ключевое слово Default) @SW_MINIMIZE = свернутое окно @SW_MAXIMIZE = развернутое окно |
opt_flag |
[необязательный] Управление различными опциями взаимодействия процессов родительского и дочернего. 0x1 ($STDIN_CHILD) = предоставить указатель дочернего потока STDIN 0x2 ($STDOUT_CHILD) = предоставить указатель дочернего потока STDOUT 0x4 ($STDERR_CHILD) = предоставить указатель дочернего потока STDERR 0x8 ($STDERR_MERGED) = предоставить указатель STDOUT и STDERR. Подразумевается оба, $STDOUT_CHILD и $STDERR_CHILD. 0x10 ($STDIO_INHERIT_PARENT) = предоставить дочерний от родительского потока STDIO. Этот флаг не может быть совмещен с любым другим флагом STDIO. Этот флаг имеет смысл только, когда родительская программа скомпилирована как консольное приложение. 0x10000 ($RUN_CREATE_NEW_CONSOLE) = дочерний консольный процесс должен быть создан в собственном окне, вместо использования родительского окна. Этот флаг имеет смысл только, когда родительская программа скомпилирована как консольное приложение. |
Возвращаемое значение
Успех: | Возвращает PID запущенного процесса. |
Ошибка: | Возвращает 0 и устанавливает @error не равным нулю. |
Примечания
Пути с пробелами должны быть заключены в кавычки.См. также
Run, RunWait, RunAsWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdoutRead, StdioClose, ProcessCloseПример
; Введите имя пользователя и пароль для вашей системы.
$sUserName = "Username"
$sPassword = "Password"
; Запускает блокнот развёрнутым на весь экран от имени указанного выше пользователя.
$iPID = RunAs($sUserName, @ComputerName, $sPassword, 0, "notepad.exe", "", @SW_SHOWMAXIMIZED)
; Ожидание 5 секунд до появление окна блокнота
WinWait("[CLASS:Notepad]", "", 5)
; Ожидание 2 секунды.
Sleep(2000)
; Закрывает блокнот используя PID возвращённый функцией RunAs.
ProcessClose($iPID)