Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用命令行创建在特定用户登录上运行的计划任务_Windows_Batch File_Cmd - Fatal编程技术网

Windows 使用命令行创建在特定用户登录上运行的计划任务

Windows 使用命令行创建在特定用户登录上运行的计划任务,windows,batch-file,cmd,Windows,Batch File,Cmd,我需要创建一个在特定用户登录时运行一次的计划任务。其目的是仅为特定用户启动任务 我知道我可以使用任务调度器在登录时创建一个带有触发器的任务,并在“设置”下指定特定用户 但是,由于我需要在安装例程中创建此文件,因此必须使用命令行(例如使用schtasks命令)自动创建此文件。可以使用以下示例创建在登录时执行的任务: schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON 但是我没有找到任何修改器来指定ONLOGON触发器

我需要创建一个在特定用户登录时运行一次的计划任务。其目的是仅为特定用户启动任务

我知道我可以使用任务调度器在登录时创建一个带有触发器的任务,并在“设置”下指定特定用户

但是,由于我需要在安装例程中创建此文件,因此必须使用命令行(例如使用schtasks命令)自动创建此文件。可以使用以下示例创建在登录时执行的任务:

schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON
但是我没有找到任何修改器来指定ONLOGON触发器的特定用户

资源:

你知道有没有未登记的开关吗?或者提供必要功能的任何其他命令行工具


谢谢。

我不知道有这样的选择。不幸的是,
schtasks
命令没有涵盖Task Scheduler 2.0提供的所有功能。您可以使用VBScript实现这一点,但是,(ab)使用任务调度器来完成一些任务非常麻烦,而通过启动快捷方式、用户键中的注册表项或登录脚本可以轻松实现这些任务。

我不知道有这样的选项。不幸的是,
schtasks
命令没有涵盖Task Scheduler 2.0提供的所有功能。您可以使用VBScript来实现这一点,但是,(ab)使用任务调度器来完成一些事情会很麻烦,这些事情可以通过启动快捷方式、用户键中的注册表项或登录脚本轻松实现。

最好的方法是通过schtasks命令行简单地导入XML。以下是一个示例,每当bob登录时,它都以bob的身份运行“calc.exe”:

  <?xml version="1.0" encoding="UTF-16" ?> 
- <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
- <RegistrationInfo>
  <Date>2014-10-22T01:50:13</Date> 
  <Author>user</Author> 
  </RegistrationInfo>
- <Triggers>
- <LogonTrigger>
  <StartBoundary>2014-10-22T01:50:00</StartBoundary> 
  <Enabled>true</Enabled> 
  <UserId>WIN7BOX\bob</UserId> 
  </LogonTrigger>
  </Triggers>
- <Principals>
- <Principal id="Author">
  <UserId>bob</UserId> 
  <LogonType>InteractiveToken</LogonType> 
  <RunLevel>LeastPrivilege</RunLevel> 
  </Principal>
  </Principals>
- <Settings>
  <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> 
  <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> 
  <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> 
  <AllowHardTerminate>true</AllowHardTerminate> 
  <StartWhenAvailable>false</StartWhenAvailable> 
  <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> 
- <IdleSettings>
  <StopOnIdleEnd>true</StopOnIdleEnd> 
  <RestartOnIdle>false</RestartOnIdle> 
  </IdleSettings>
  <AllowStartOnDemand>true</AllowStartOnDemand> 
  <Enabled>true</Enabled> 
  <Hidden>false</Hidden> 
  <RunOnlyIfIdle>false</RunOnlyIfIdle> 
  <WakeToRun>false</WakeToRun> 
  <ExecutionTimeLimit>P3D</ExecutionTimeLimit> 
  <Priority>7</Priority> 
  </Settings>
- <Actions Context="Author">
- <Exec>
  <Command>calc.exe</Command> 
  </Exec>
  </Actions>
  </Task>

- 
- 
2014-10-22T01:50:13
使用者
- 
- 
2014-10-22T01:50:00
真的
WIN7BOX\bob
- 
- 
上下快速移动
互动电视
租赁权
- 
无知的新
真的
真的
真的
假的
假的
- 
真的
假的
真的
真的
假的
假的
假的
P3D
7.
- 
- 
calc.exe

最好的方法是通过schtasks命令行简单地导入XML。以下是一个示例,每当bob登录时,它都以bob的身份运行“calc.exe”:

  <?xml version="1.0" encoding="UTF-16" ?> 
- <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
- <RegistrationInfo>
  <Date>2014-10-22T01:50:13</Date> 
  <Author>user</Author> 
  </RegistrationInfo>
- <Triggers>
- <LogonTrigger>
  <StartBoundary>2014-10-22T01:50:00</StartBoundary> 
  <Enabled>true</Enabled> 
  <UserId>WIN7BOX\bob</UserId> 
  </LogonTrigger>
  </Triggers>
- <Principals>
- <Principal id="Author">
  <UserId>bob</UserId> 
  <LogonType>InteractiveToken</LogonType> 
  <RunLevel>LeastPrivilege</RunLevel> 
  </Principal>
  </Principals>
- <Settings>
  <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> 
  <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> 
  <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> 
  <AllowHardTerminate>true</AllowHardTerminate> 
  <StartWhenAvailable>false</StartWhenAvailable> 
  <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> 
- <IdleSettings>
  <StopOnIdleEnd>true</StopOnIdleEnd> 
  <RestartOnIdle>false</RestartOnIdle> 
  </IdleSettings>
  <AllowStartOnDemand>true</AllowStartOnDemand> 
  <Enabled>true</Enabled> 
  <Hidden>false</Hidden> 
  <RunOnlyIfIdle>false</RunOnlyIfIdle> 
  <WakeToRun>false</WakeToRun> 
  <ExecutionTimeLimit>P3D</ExecutionTimeLimit> 
  <Priority>7</Priority> 
  </Settings>
- <Actions Context="Author">
- <Exec>
  <Command>calc.exe</Command> 
  </Exec>
  </Actions>
  </Task>

- 
- 
2014-10-22T01:50:13
使用者
- 
- 
2014-10-22T01:50:00
真的
WIN7BOX\bob
- 
- 
上下快速移动
互动电视
租赁权
- 
无知的新
真的
真的
真的
假的
假的
- 
真的
假的
真的
真的
假的
假的
假的
P3D
7.
- 
- 
calc.exe
将选项“/IT”添加到schtasks/create命令中,例如:

schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON /IT
如“指示任务仅在(特定用户)登录时运行的/it参数”中所述

您应该忽略提到“任何用户登录时”的任务调度程序GUI,并实际尝试重新启动设备。您会发现,只有使用(特定用户)的帐户登录时,特定命令才会运行。

将选项“/IT”添加到schtasks/create命令中,例如:

schtasks /Create /TR executable.exe /RU user /TN name /SC ONLOGON /IT
如“指示任务仅在(特定用户)登录时运行的/it参数”中所述

您应该忽略提到“任何用户登录时”的任务调度程序GUI,并实际尝试重新启动设备。您会发现,只有当您使用(特定用户)的帐户登录时,特定命令才会运行。

这是有效的

SchTasks /Create /SC DAILY /TN “abcMyTask” /TR “C:RunMe.bat” /ST 09:00 /IT /S /U testuser /P password@123
创建一个新用户(这里我从本地Windows系统创建了
testuser
)。 在本地计算机上,它不工作。尝试使用用户名
testuser
和密码从另一个Windows系统运行该命令。它可以远程创建一个计划任务。

这很有效

SchTasks /Create /SC DAILY /TN “abcMyTask” /TR “C:RunMe.bat” /ST 09:00 /IT /S /U testuser /P password@123
创建一个新用户(这里我从本地Windows系统创建了
testuser
)。
在本地计算机上,它不工作。尝试使用用户名
testuser
和密码从另一个Windows系统运行该命令。它远程创建一个计划任务。

那么您说运行部分的条目比使用任务计划程序更可取?我应该只在定期运行任务时使用调度程序?谢谢你给我指出了正确的方向。我将使用注册表项。@SvenPlath当然这只是我个人的意见,但是是的,我会选择
Run
项而不是计划的登录任务。所以你说运行部分的项比使用任务计划程序更可取?我应该只在定期运行任务时使用调度程序?谢谢你给我指出了正确的方向。我会选择一个注册表项。@SvenPlath当然这只是我个人的意见,但是是的,我会选择一个
Run
项而不是计划的登录任务。