Я хочу создать запланированную задачу из пользовательского действия. Мне нужны повышенные привилегии для его создания. Я использую Task Scheduler Managed Wrapper.Вызов пользовательского действия с повышенными привилегиями, но не как LocalSystem
using (TaskDefinition taskDefinition = TaskService.Instance.NewTask())
{
taskDefinition.RegistrationInfo.Date = DateTime.Now;
taskDefinition.RegistrationInfo.Description = "...";
taskDefinition.Principal.RunLevel = TaskRunLevel.Highest; // Scheduled Task with elevated privileges
DailyTrigger trigger = new DailyTrigger();
try
{
trigger.StartBoundary = new DateTime(DateTime.Today.Ticks)
.AddHours(20);
trigger.ExecutionTimeLimit = TimeSpan.FromSeconds(30);
trigger.DaysInterval = 2;
}
catch
{
trigger.Dispose();
throw;
}
taskDefinition.Triggers.Add(trigger);
taskDefinition.Actions.Add(Path.Combine(session.CustomActionData.Keys.Single(), "Updater.exe"));
TaskService.Instance.RootFolder.RegisterTaskDefinition(TaskName, taskDefinition);
}
Согласно How to run custom executable with elevated privileges? я должен использовать
impersonate='no'
Это работает, но я хочу иметь пользователь, который назвал MSI в качестве пользователя Запланированные задачи. Но вышеприведенное решение позволяет MSI вызывать пользовательское действие как LocalSystem, которое затем создает запланированную задачу с пользователем LocalSystem.
Запланированная задача вызывает exe, который читается с UNC-пути. Поэтому LocalSystem работать там не будет.
Как можно вызвать пользовательское действие с пользователем MSI с повышенными привилегиями?
Можете ли вы подтвердить, что пользовательское действие не настроен как отложенный? –