2

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?

+0

Können Sie bestätigen, dass die benutzerdefinierte Aktion nicht als latente konfiguriert ist? –

Antwort

0

Damit eine benutzerdefinierte benutzerdefinierte Aktion mit den Anmeldeinformationen des installierenden Benutzers ausgeführt wird, müssen Sie die gesamte MSI-Prozessinitiierung erhöhen und in Ihrer benutzerdefinierten Aktion impersomnate = yes verwenden. Der Start erfolgt in der Regel mit einem Startprogramm, das ein Eleven-Manifest enthält und das MSI mit einem CreateProcess-Start startet, oder besser nur MsiInstallProduct (oder gleichwertig) direkt aufruft.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370315(v=vs.85).aspx

Verwandte Themen