2

사용자 지정 작업에서 예약 된 작업을 만들고 싶습니다. 그것을 만들기 위해서는 높은 권한이 필요합니다. 나는 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?에 따르면 난 내가 예약 된 작업의 사용자로 MSI라는 사용자가 원하는

impersonate='no' 
이 작동

하지만 사용해야합니다. 그러나 위의 솔루션을 사용하면 MSI는 사용자 지정 작업을 LocalSystem으로 호출하여 LocalSystem 사용자와 함께 예약 된 작업을 만듭니다.

예약 된 작업은 UNC 경로에서 읽는 exe를 호출합니다. 따라서 LocalSystem은 거기서 작동하지 않습니다.

상승 된 권한으로 MSI 사용자와 함께 사용자 지정 동작을 호출하려면 어떻게해야합니까?

+0

사용자 지정 작업이 지연으로 구성되어 있는지 확인할 수 있습니까? –

답변

0

사용자 자격 증명을 설치하여 상승 된 사용자 지정 동작을 실행하려면 전체 MSI 프로세스 초기화를 높여야하며 사용자 지정 동작에서 impersomnate = yes를 사용해야합니다. 시작은 일반적으로 고도 매니페스트가 있고 CreateProcess 시작으로 MSI를 시작하는 실행 프로그램으로 수행하거나 더 나은 MsiInstallProduct (또는 동급)를 직접 호출하는 것입니다.

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