Можно ли создать задачу Windows, которая будет запускаться при входе любого пользователя? - PullRequest
0 голосов
/ 19 марта 2020

Я уверен, что это должно быть возможно, но моего Google-фу (и Windows знаний) должно быть сильно не хватает, потому что я продолжаю терпеть неудачу. Я пытаюсь запланировать задачу как часть процесса установки, которая будет запускаться от имени текущего пользователя и запускаться при входе пользователя в систему. Если пользователь входит в систему, задача должна начать выполняться как пользователь1. Если пользователь 1 выходит из системы, а пользователь 2 входит позже, задача должна запускаться от имени пользователя 2.

Существует ли имя-заполнитель, которое я могу использовать при создании задачи, которая продемонстрировала бы такое поведение? Идеальное решение должно работать в корпоративной среде "generi c"; то есть я не могу создать нового пользователя или группу специально для решения этой проблемы.

Я вручную создал задачу с помощью планировщика задач Windows, но безуспешно. Экспортируется XML ниже:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2020-03-18T14:08:48.8628608</Date>
    <Author>DESKTOP-SOMETHING\dev</Author>
    <URI>\MyTestTask</URI>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <Enabled>true</Enabled>
    </LogonTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>I-REALLY-DONT-KNOW</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</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>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"C:\Program Files\MyAmazingProgram\my-program.exe"</Command>
    </Exec>
  </Actions>
</Task>
...