Все привет, бывают ситуации, когда необходимо создать в планировщике задач, свою задачу. Будь то проверка обновления или добавления сервиса. Есть много разных библиотек которые могут вам в этом помочь, но что, если задача стоит в том, чтобы не использовать сторонние библиотеки для решения тривиальной задачи?
В начале хотел бы о главной проблеме при добавлении задач в планировщик, нужно иметь права администратора, и никак иначе задачу в планировщик без прав не добавить.
Это можно было очень давно, но в Windows 10 дыр становятся все меньше и меньше. Для этого вам необходимо создать манифест, в котором указать запуск вашего приложения с правами администратора.
А выполнить мы можем с помощью cmd команды таким образом:
1 2 3 4 5 6 |
Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/C" + "schtasks /create /rl highest /tn My_Prog /sc onlogon /tr \"D:\\install\\MyProg.exe\""; p.StartInfo.CreateNoWindow = true; p.Start(); |
При использовании кода выше, у вас выполниться команда запуска утилиты schtasks в которой будет добавлена задача в планировщик. Причем командное окно у нас не будет видно, так как мы его намерено скрыли.
Теперь если посмотреть в планировщик, мы у видим нашу задачу. Таким образом мы решили поставленную нами цель.