Ich möchte eine geplante Aufgabe aus einer benutzerdefinierten Aktion erstellen. Ich brauche erhöhte Rechte, um es zu erstellen. Ich verwende Task Scheduler Managed Wrapper.Call Custom Action mit erhöhten Rechten, aber nicht als 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);
}
Nach How to run custom executable with elevated privileges? habe ich
impersonate='no'
Dies funktioniert verwenden, aber ich will den Benutzer haben, die die MSI als Benutzer der geplanten Aufgabe genannt. Aber die obige Lösung lässt das MSI die benutzerdefinierte Aktion als LocalSystem aufrufen, die dann die geplante Aufgabe mit dem LocalSystem-Benutzer erstellt.
Der geplante Task ruft eine EXE auf, die von einem UNC-Pfad liest. Also wird LocalSystem dort nicht funktionieren.
Wie kann die benutzerdefinierte Aktion mit dem MSI-Benutzer mit erhöhten Rechten aufgerufen werden?
Können Sie bestätigen, dass die benutzerdefinierte Aktion nicht als latente konfiguriert ist? –