Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 18
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, попробую, спасибо!

То что по ссылке не заработало, но решение отсюда работает (на основе Task Scheduler Scripting Objects) позволяя запускать с параметрами и средним обязательным уровнем. Собственно то что я хотел попытаться сделать, но до использования Task Scheduler в качестве оболочки вряд ли бы додумался, не говоря о реализации ))
читать дальше »

Код: Выделить весь код
RunAsUser(Target, Arguments, WorkingDirectory)
{
static TASK_TRIGGER_REGISTRATION := 7 ; trigger on registration.
static TASK_ACTION_EXEC := 0 ; specifies an executable action.
static TASK_CREATE := 2
static TASK_RUNLEVEL_LUA := 0
static TASK_LOGON_INTERACTIVE_TOKEN := 3
objService := ComObjCreate("Schedule.Service")
objService.Connect()

objFolder := objService.GetFolder("\")
objTaskDefinition := objService.NewTask(0)

principal := objTaskDefinition.Principal
principal.LogonType := TASK_LOGON_INTERACTIVE_TOKEN ; Set the logon type to TASK_LOGON_PASSWORD
principal.RunLevel := TASK_RUNLEVEL_LUA ; Tasks will be run with the least privileges.

colTasks := objTaskDefinition.Triggers
objTrigger := colTasks.Create(TASK_TRIGGER_REGISTRATION)
endTime += 1, Minutes ;end time = 1 minutes from now
FormatTime,endTime,%endTime%,yyyy-MM-ddTHH`:mm`:ss
objTrigger.EndBoundary := endTime
colActions := objTaskDefinition.Actions
objAction := colActions.Create(TASK_ACTION_EXEC)
objAction.ID := "7plus run"
objAction.Path := Target
objAction.Arguments := Arguments
objAction.WorkingDirectory := WorkingDirectory ? WorkingDirectory : A_WorkingDir
objInfo := objTaskDefinition.RegistrationInfo
objInfo.Author := "7plus"
objInfo.Description := "Runs a program as non-elevated user"
objSettings := objTaskDefinition.Settings
objSettings.Priority := 6 ; здесь работает
objSettings.Enabled := True
objSettings.Hidden := False
objSettings.DeleteExpiredTaskAfter := "PT0S"
objSettings.StartWhenAvailable := True
objSettings.ExecutionTimeLimit := "PT0S"
objSettings.DisallowStartIfOnBatteries := False
objSettings.StopIfGoingOnBatteries := False
; objSettings.Priority := 6 ; здесь выдает ошибку
objFolder.RegisterTaskDefinition("", objTaskDefinition, TASK_CREATE , "", "", TASK_LOGON_INTERACTIVE_TOKEN )
}


Не разобрался только как добавить приоритет создаваемой задачи, вот так не работает
Код: Выделить весь код
objSettings.Priority := 6
В свойстве TaskDefinition.Settings по документации присутствует свойство Priority

Upd. Разобрался, просто перенес свойство Priority повыше, начало нормально работать ) Мозг перегрелся, но вопрос решен. Спасибо Iska и Vadikan за помощь!

P.S. запуск с пониженными правами через командную строку и schtasks.exe

Последний раз редактировалось parkone, 16-01-2014 в 17:11.


Отправлено: 18:32, 14-01-2014 | #9