2016-01-13 50 views
0

它的條件如下,我想使任務如何解決在C#創建任務的錯誤

安全選項

  1. 帳戶:SYSTEM
  2. 運行用戶是否登錄或不
  3. 以最高權限運行。
當我創建任務調度

,出現異常時(HRESULT:0X80070005) E_ACESSDENIED

private void CreateTask() 
    { 
         try 
         { 
          using (TaskService ts = new TaskService()) 
          { 
           var newTask = ts.NewTask(); 
           newTask.RegistrationInfo.Author = Environment.UserName; 
           newTask.RegistrationInfo.Description = "Crfs Bin Upload"; 
           newTask.Principal.UserId = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null).Translate(typeof(NTAccount)).Value; 
           newTask.Principal.RunLevel = TaskRunLevel.Highest; 
           Trigger trigger = new DailyTrigger(); 
           trigger.StartBoundary = DateTime.Now.AddMinutes(5); 
           trigger.Repetition.Interval = TimeSpan.FromMinutes(5); 
           trigger.Repetition.StopAtDurationEnd = false; 
           trigger.Enabled = true; 

           newTask.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew; 
           newTask.Settings.DisallowStartIfOnBatteries = true; 
           newTask.Settings.StopIfGoingOnBatteries = false; 
           newTask.Settings.AllowHardTerminate = false; 
           newTask.Settings.StartWhenAvailable = false; 
           newTask.Settings.RunOnlyIfNetworkAvailable = true; 
           newTask.Settings.IdleSettings.StopOnIdleEnd = false; 
           newTask.Settings.IdleSettings.RestartOnIdle = false; 
           newTask.Settings.Enabled = true; 
           newTask.Settings.Hidden = false; 
           newTask.Settings.RunOnlyIfIdle = false; 
           newTask.Settings.WakeToRun = false; 
           newTask.Settings.ExecutionTimeLimit = TimeSpan.FromSeconds(0); 
           newTask.Settings.Priority = System.Diagnostics.ProcessPriorityClass.Normal; 
           newTask.Triggers.Add(trigger); 
           newTask.Actions.Add(new ExecAction("notepad.exe")); 


           ts.RootFolder.RegisterTaskDefinition("NewTask", newTask); 
           MessageBox.Show("작업 스케줄러가 정상적으로 등록되었습니다.", "작업 스케줄러 등록", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 
          } 
         } 
         catch (Exception ex) 
         { 
          MessageBox.Show("작업 스케줄러의 등록을 실패하였습니다.\r\n" + ex.Message, "작업 스케줄러 등록 실패", MessageBoxButtons.OK, MessageBoxIcon.Error); 
         } 
        } 
} 

回答

0

拒絕訪問意味着你無權這樣做。

除非您是管理員,否則無法創建以SYSTEM身份運行的任務。您需要從提升的命令提示符下運行該程序。

相關問題