File.RunAs
Описание
Запускает исполняемый файл от другого пользователя.
Примечание: Это действие работает только в оперативных системах, поддерживающих профили пользователей, поэтому оно поддерживается на Windows 2000, Windows Server и Windows XP. Действие не поддерживается не-NT оперативными системами, такими как Windows 95/98/ME.
ПараметрыFilename
(строка) Путь к исполняемому (.exe) файлу.
Args
(строка) Аргументы командной строки для передачи исполняемому файлу.
WorkingFolder
(строка) Рабочая папка устанавливаемая для исполняемого файла.
Примечание: Этот параметр устанавливает текущую рабочую папку какой-то другой, чем папка в которой находится файл. Как правило, его оставляют пустым..
WindowMode
(число) Используемый режим (вид) окна:
WaitForReturn
(логический) Будет ли приложение ждать окончания работы исполняемого файла, чтобы продолжить свою работу:
Примечание: Этот параметр должен быть установлен как истина (true), если нужно принимать код возвращения процесса.
UserName
(строка) Имя пользователя, которое будет использоваться для запуска файла. Нужно использовать формат UPN (User Principal Name) (например, user@DNS_domain_name), если входите на сетевой домен и не указываете параметр Domain.
Password
(строка) Пароль для указанного имени пользователя.
Domain
(строка) Домен или сервер, который содержит базу данных учетных записей для указанного пользователя.
Если домен не указан, параметр UserName должен быть в формате UPN (например, user@DNS_domain_name), если входите в сетевой домен.
LogonFlag
(число) Используемый флаг вход в систему. Выбор из:
CreationOptions
(таблица) Таблица, содержащая параметры создания по имени, которые управляют процессом создания.
В таблице значение истина - true включает параметр, а значение ложь - false отключает его.
Если передается значение nil, параметры DefaultErrorMode, NewConsole и NewProcessGroup устанавливаются как истина - true по умолчанию. В таблице могут быть установлене или сброшены следующие опции:
ExtendedErrorInfo
(таблица) Таблица, которая будет заполнена дополнительной информацией об ошибке, индексированная следующими ключами:
Примечание: Поскольку этот параметр требует таблицу, сначала перед вызовом действия нужно создать таблицу, например, TableName={};
ВозвратResultVariable
(число) Процесс возвращает код если параметр WaitForReturn установлен в истину (true). Если параметр WaitForReturn установлен как ложь (false) возвращается 0.
Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему.
Примечание: Возвращаемое состояние завершения может быть одним из следующих:
Выходное значение указывается в функциях ExitProcess или TerminateProcess. Значение возврата из основной функции или функции WinMain процесса. Исключительное значение для необработанного исключения, вызвавшего окончание процесса.
Смотрите также: Связанные действия
ПримерыПример 1ReturnCode = File.RunAs(_TempFolder .. "\\setup.exe", "/W", "", SW_SHOWNORMAL, true, "TestUser", "fake_password", "", LOGON_NO_OPTION, nil, nil);Используя разрешения пользователя "TestUser", запускаем файл "setup.exe",размещенный в папке пользователя Temp, передаем ему /W, как аргумент командной строки, и ждем окончания работы setup.exe перед тем как продолжить следующее действие. Любой код, возвращенный "setup.exe" сохраняем в переменной "ReturnCode". Примечание: _TempFolder это встроенная переменная, что содержит путь к папке "Temp" в системе пользователя. Пример 2-- Create the extended error info table. -- Создаем таблицу с дополнительными данными об ошибке. ExtendedErrorInfo = {}; -- Run the file as an administrator. -- Запускаем файл как администратор. nReturnCode = File.RunAs(_TempFolder .. "\\SetupTest.exe", "/W", "", SW_SHOWNORMAL, true, "Administrator", "master_password", "work.fakedomain.com", LOGON_WITH_PROFILE, nil, ExtendedErrorInfo); error = Application.GetLastError(); -- Check if the action succeeded or failed and display the error messages. -- Проверяем успешно ли действие или неудачно и показываем сообщение об ошибке. if (error ~= 0) then Dialog.Message("Error", _tblErrorMessages[error] .. "\r\n" .. ExtendedErrorInfo.ErrorCode .. ": " .. ExtendedErrorInfo.ErrorMsg); endИспользуя разрешения пользователя "Administrator" запускаем файл "SetupTest.exe", размещенный в папке пользователя Temp, передаем ему /W, как аргумент командной строки, и ждем окончания работы SetupTest.exe перед тем как продолжить следующее действие. Любой код, возвращенный "setup.exe" сохраняем в переменной "ReturnCode" и если произошла ошибка показываем диалоговое окно с кодом ошибки и сообщениями.
Смотрите также: Связанные действия
|