首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用win32com向Python上的任务调度器添加Principal.RunLevel

使用win32com向Python上的任务调度器添加Principal.RunLevel
EN

Stack Overflow用户
提问于 2020-06-16 19:10:18
回答 1查看 287关注 0票数 1

在网上看了很多天之后。我决定问我自己的问题。我已经做了一些调查,并找到了一些方法来实现这一点,但我被卡住了。我知道我必须更改logon_type并设置用户名,但这似乎不起作用。我已经尝试使用salt.module.win_task.py作为指导,但它仍然不适用于我。这是我的代码(从别人那里借来的,我做了一些微调)

代码语言:javascript
复制
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复制)

代码语言:javascript
复制
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

和更改这一部分

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

发布于 2021-04-10 05:09:09

你的代码运行得很好!您得到错误代码:(-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024891), None)的原因是您试图在没有管理权限的情况下更改Principal.Runlevel

要使代码正常工作,请以管理员身份运行cmd窗口,并使用该窗口运行win_task.py。>python win_task.py Here是一个关于如何做到这一点的视频!

在以管理员身份运行脚本后,我可以创建任务并更改“以最高权限运行”复选框。

Here是我能够找到的唯一解释principal.runlevel的资源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62407093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档