Добавление Principal.RunLevel в планировщик задач на Python с использованием win32com - PullRequest
0 голосов
/ 16 июня 2020

Посмотрев вокруг rnet много дней. Я решил задать свой вопрос. Я немного покопался и нашел несколько способов реализовать это, но я застрял. Я знаю, что мне нужно изменить logon_type и установить имя пользователя, но, похоже, это не работает. Я пробовал использовать salt.module.win_task.py в качестве ориентира, но у меня он все еще не работает. Это мой код (заимствованный у кого-то с некоторыми настройками, которые я сделал)

scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect()
root_folder = scheduler.GetFolder('\\')
task_def = scheduler.NewTask(0)

# Create trigger
start_time = datetime.datetime.now() + datetime.timedelta(minutes=30)
TASK_TRIGGER_TIME = 1
trigger = task_def.Triggers.Create(TASK_TRIGGER_TIME)
trigger.StartBoundary = start_time.isoformat()

# Create action
TASK_ACTION_EXEC = 0
action = task_def.Actions.Create(TASK_ACTION_EXEC)
action.ID = "TEST"
action.Path = "C:/test/test.bat"
action.Arguments = ''
action.WorkingDirectory = "C:/test/"

# Set parameters
task_def.RegistrationInfo.Description = 'Run test.bat'
task_def.Settings.Enabled = True
task_def.Settings.StopIfGoingOnBatteries = False
task_def.Settings.Hidden = False
task_def.Settings.startwhenavailable = True
task_def.Settings.DisallowStartIfOnBatteries = False

# Register task
# If task already exists, it will be updated
TASK_CREATE_OR_UPDATE = 6
TASK_LOGON_NONE = 0
root_folder.RegisterTaskDefinition(
    "TEST",  # Task name
    task_def,
    TASK_CREATE_OR_UPDATE,
    '',  # No user
    '',  # No password
    TASK_LOGON_NONE)

Я пробовал добавить (скопировать из win_task.py)

TASK_RUNLEVEL_HIGHEST = 1
TASK_LOGON_SERVICE_ACCOUNT = 5
task_def.Principal.UserID = "SYSTEM"
task_def.Principal.DisplayName = "SYSTEM"
task_def.Principal.GroupID = "Administrators"
task_def.Principal.LogonType = TASK_LOGON_SERVICE_ACCOUNT
task_def.Principal.RunLevel = TASK_RUNLEVEL_HIGHEST

и изменить эту часть

root_folder.RegisterTaskDefinition(
        "TEST",  # Task name
        task_def,
        TASK_CREATE_OR_UPDATE,
        task_def.Principal.UserID, 
        None,  # No password
        TASK_LOGON_SERVICE_ACCOUNT)

Практически все перепробовал, кто-нибудь знает, как добавить свойство runlevel? (без использования XML)

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