Windows 如何通过VBScript计划登录任务

Windows 如何通过VBScript计划登录任务,windows,winapi,vbscript,scheduled-tasks,windows-task-scheduler,Windows,Winapi,Vbscript,Scheduled Tasks,Windows Task Scheduler,我尝试了许多不同的方法。没有一个奏效。以下代码是它当前的样子,并且(请参见下文)不起作用: 选项显式 '******************************************************** '创建TaskService对象。 暗淡的服务 Set service=CreateObject(“Schedule.service”) 呼叫服务。连接() '******************************************************** '获取要

我尝试了许多不同的方法。没有一个奏效。以下代码是它当前的样子,并且(请参见下文)不起作用:

选项显式
'********************************************************
'创建TaskService对象。
暗淡的服务
Set service=CreateObject(“Schedule.service”)
呼叫服务。连接()
'********************************************************
'获取要在其中创建任务定义的文件夹。
Dim根文件夹
设置rootFolder=service.GetFolder(\“”)
'taskDefinition变量是taskDefinition对象。
Dim任务定义
'标志参数为0,因为它不受支持。
设置taskDefinition=service.NewTask(0)
“--------------校长
'taskDefinition.principal.LogonType=3
'taskDefinition.principal.UserId=“S-1-5-21-2764009396-4153354299-229777058-1001”
'taskDefinition.principal.RunLevel=0'最小权限
'taskDefinition.principal.GroupId=“内置\Administrators”
'********************************************************
'定义有关任务的信息。
'通过设置任务的注册信息
'正在创建RegistrationInfo对象。
Dim regInfo
设置regInfo=taskDefinition.RegistrationInfo
regInfo.Description=“任务将在”&_
“指定的用户登录。”
regInfo.Author=“作者姓名”
'通过设置任务计划程序的任务设置信息
'正在创建TaskSettings对象。
暗设置
设置设置=任务定义。设置
settings.StartWhenAvailable=True
'********************************************************
'创建登录触发器。
'指定登录触发器的常量。
常量TriggerTypeLogon=9
暗触发器
设置触发器=taskDefinition.triggers
暗触发器
Set trigger=triggers.Create(TriggerTypeLogon)
'定义触发器何时激活的触发器变量。
暗淡的开始时间、结束时间
startTime=“2006-05-02T10:49:02”
endTime=“2046-05-02T10:52:02”
'WScript.Echo“startTime:&startTime”
'WScript.Echo“endTime:&endTime
trigger.StartBoundary=startTime
trigger.EndBoundary=endTime
trigger.ExecutionTimeLimit=“PT5M”五分钟
trigger.Id=“LogonTriggerId”
trigger.UserId=“alfp”'“alfswindowspc10\alfp”'必须是有效的用户帐户
trigger.Enabled=True
'***********************************************************
'为要执行的任务创建操作。
'指定可执行操作的常量。
const ActionTypeExecutable=0
'将操作添加到任务。该操作执行记事本。
模糊动作
Set Action=taskDefinition.Actions.Create(ActionTypeExecutable)
Action.Path=“C:\Windows\System32\notepad.exe”
WScript.Echo“已创建任务定义。即将提交任务…”
'***********************************************************
'注册(创建)任务。
常量createOrUpdateTask=6
调用根文件夹。RegisterTaskDefinition(_
“测试登录触发器”、任务定义、createOrUpdateTask、_
“内置\管理员”,4)
Echo“任务已提交”
到目前为止,所有的尝试都在最后的
rootFOlder.RegisterTaskDefinition
调用上失败,显然声称用户id或组id有问题

[C:\my\tezt]
> cscript //e:vbscript //nologo example_create_task.vbs
Task definition created. About to submit the task...
C:\my\tezt\example_create_task.vbs(88, 5) (null): (42,4):GroupId:


[C:\my\tezt]
>_
我是在正常模式还是提升模式下运行它似乎并不重要


通过
schtasks
命令调度登录任务通常适用于XML任务定义,对于通过选项指定的任务,从提升模式调度登录任务。

事实证明,MS代码中的神奇数字4是
任务登录组。我将其更改为3,
TASK\u LOGON\u INTERACTIVE\u TOKEN
,并删除了
“Builtin\Administrators”
用户id覆盖,现在它可以工作了。

事实证明,MS代码中的神奇数字4是
TASK\u LOGON\u组
。我将其更改为3,
TASK\u LOGON\u INTERACTIVE\u TOKEN
,还删除了
“Builtin\Administrators”
用户id覆盖,现在它可以工作了。

您正在对可选参数使用Visual Basic语法。这在VBScript中不受支持。对于不打算使用的可选参数,需要显式传递
Null
。@IInspectable:确定吗?这是微软的代码(好吧,那部分和大部分是)?他们在Q中链接的页面中将其描述为“以下VBScript示例”。但我会尝试,谢谢!)@IInspectable:原来MS代码中的神奇数字4是
TASK\u LOGON\u GROUP
。我把它改为3,
任务\登录\交互\令牌
,现在它可以工作了。无需为可选参数使用
Null
,但感谢您的建议@IInspectable仅对用户定义的函数有效。COM对象的内置函数和方法接受空参数值。可选参数使用Visual Basic语法。这在VBScript中不受支持。对于不打算使用的可选参数,需要显式传递
Null
。@IInspectable:确定吗?这是微软的代码(好吧,那部分和大部分是)?他们在Q中链接的页面中将其描述为“以下VBScript示例”。但我会尝试,谢谢!)@IInspectable:原来MS代码中的神奇数字4是
TASK\u LOGON\u GROUP
。我把它改为3,
任务\登录\交互\令牌
,现在它可以工作了。无需为可选参数使用
Null
,但感谢您的建议@IInspectable仅对用户定义的函数有效。COM对象的内置函数和方法接受空参数值。