Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
.NET 4.x

Получение списка задач из планировщика Windows на запуск файлов при старте системы, а так же при входе пользователя

30.08.2018, 18:49. Показов 3900. Ответов 13

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Microsoft Visual Studio Professional 2015 C#
Версия 14.0.25431.01 Update 3
Microsoft .NET Framework
Версия 4.7.03056

Стоит задача на получение списка заданий из планировщика Windows на запуск файлов при старте системы, а так же при входе пользователя.
Необходимо знать: как запускаются файлы, при старте системы, либо для конкретного пользователя и что запускается. Необходимо получить полный путь к запускаемому файлу.
Пытаюсь использовать PowerSchell. Get-ScheduledTask. Дальше получения перечня заданий пробиться не могу.
В точке останова, в свойствах Task вижу путь к файлу, но как его вытащить? Как из полученного списка Taskов обработать только задания при старте? Понимаю, что это типы триггеров OnSystemStartTrigger и OnLogonTrigger, но как добраться к их свойствам?
Подскажите, возможно ли это с помощью PowerSell и как, или другие инструменты?
Заранее спасибо за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.08.2018, 18:49
Ответы с готовыми решениями:

При входе Windows пароль не требуется, а при входе в сетевую папку требует имя пользователя и пароль
Имеется Windows Server 2012 и клиентская машина на Windows 7 которая привязана к домену. Почему когда вход в Windows пароль не требуется, а...

Запуск Bat из планировщика задач Windows
Здравствуйте. Прочитал тему на форуме: Разработать командный файл, который формировал бы ежемесячный отчет об изменениях в рабочем...

Запуск Bat при входе в систему определенного пользователя
Добрый вечер форумчане!!! Пожалуйста, прошу вас снова мне помочь! Нужно, чтобы bat-файл запускался каждый раз не при старте системы,...

13
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
30.08.2018, 19:38
https://github.com/dahall/TaskScheduler
https://github.com/dahall/Task... -all-tasks
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
30.08.2018, 20:44  [ТС]
Спасибо, но это я понимаю обертка.
По условию нельзя использовать сторонние компоненты, библиотеки и модули. Только MS VS(((
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
30.08.2018, 20:47
Цитата Сообщение от nsi_kuban Посмотреть сообщение
По условию нельзя использовать сторонние компоненты, библиотеки и модули.
Предлагаю в таком случае послать того, что дает такие задания куда подальше.
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
30.08.2018, 20:49  [ТС]
Подскажите как установить сборку. Скачал пакет и далее...?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
30.08.2018, 20:51
Цитата Сообщение от nsi_kuban Посмотреть сообщение
Подскажите как установить сборку. Скачал пакет и далее...?
Через менеджер пакетов nuget который есть в VS ставите и всё само добавляется в проект.
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
31.08.2018, 11:42  [ТС]
Коллеги, вопрос открыт. Никто не работал с заданиями через стандартные средства Microsoft(((???
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
01.09.2018, 22:00  [ТС]
Доброго времени суток. Не подскажите, почему, TaskScheduler выдает всего 13 триггеров по заданиям, а в интерфейсе планировщика 109. Как вывести все? Что не попадает?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
01.09.2018, 23:33
Код покажите. У меня код из примера по ссылке выше находит 184 задания.
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
02.09.2018, 00:59  [ТС]
Основа кода из GitHub:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Security.Principal;
using Microsoft.Win32.TaskScheduler;
using Action = Microsoft.Win32.TaskScheduler.Action;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            string user = WindowsIdentity.GetCurrent().Name;
            bool preWin7 = true;
            
            using (TaskService ts = new TaskService())
            {
                Version ver = ts.HighestSupportedVersion;;
                Console.WriteLine("Highest version: " + ver);
                Console.WriteLine("Server: {0} ({1})", ts.TargetServer,
                    ts.Connected ? "Connected" : "Disconnected");
               
                Console.WriteLine("Running tasks:");
                foreach (RunningTask rt in ts.GetRunningTasks(true))
                {
                    if (rt != null)
                    {
                        Console.WriteLine("+ {0}, {1} ({2})", rt.Name, rt.Path, rt.State);
                        if (ver.Minor > 0)
                            Console.WriteLine("  Current Action: " + rt.CurrentAction);
                    }
                }
                
                TaskFolder tf = ts.RootFolder;
                Console.WriteLine("\nЗадачи корневой папки ({0}):", tf.Tasks.Count);
                foreach (Task t in tf.Tasks)
                {
                    try
                    {
                        Console.WriteLine("++ {3}: ++ {0}, {1} ({2})", t.Name,
                            t.Definition.RegistrationInfo.Author, t.State, tf.Name );
                        foreach (Trigger trg in t.Definition.Triggers)
                            Console.WriteLine(" + tr {0}. Тип: {1}. Repe: {2}. Start: {3}", trg, trg.TriggerType, trg.Repetition, trg.StartBoundary);
                        foreach (Action act in t.Definition.Actions)
                            Console.WriteLine(" = act {0}", act);
                    }
                    catch
                    {
                    }
                }
                // Output an enumeration of all folders under the root
                Console.WriteLine($"\n\r******Проверка перечисления подкаталогов******");
                TaskFolderCollection tfs = tf.SubFolders;
                if (tfs.Count > 0)
                {
                    Console.WriteLine($"\nПодкаталоги крневой папки....::");
                    try
                    {
                        foreach (TaskFolder sf in tfs)
                        {
                            Console.WriteLine("--- {0}", sf.Path);
                            foreach (Task tt in sf.Tasks)
                            {
                                try
                                {
                                    Console.WriteLine("+ {0}, {1} ({2})", tt.Name,
                                        tt.Definition.RegistrationInfo.Author, tt.State);
                                    foreach (Trigger trg in tt.Definition.Triggers)
                                        Console.WriteLine("  + --- {0}", trg);
                                    foreach (Action act in tt.Definition.Actions)
                                        Console.WriteLine("  = --- {0}", act);
                                }
                                catch
                                {
                                }
                            }
                        }
                            
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                    }
                }
            }
            Console.Write("Press any key to continue...");
            Console.ReadKey(true);
        }
    }
}
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
02.09.2018, 01:32
На github совсем не так сделано. Еще раз внимательно посмотрите пример по второй ссылке (тот который Enumerate all tasks называется).
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
02.09.2018, 11:34  [ТС]
Спасибо, проверю...

Добавлено через 9 часов 56 минут
Спасибо, все получилось.
Но ((( стандартные средства MS так и остались непонятны
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
02.09.2018, 23:27
Цитата Сообщение от nsi_kuban Посмотреть сообщение
стандартные средства MS так и остались непонятны
Можно подцепить через Add Reference -> COM библиотеку из винды (называется примерно как TaskScheduler 1.1 Type Library, Taskschd.dll).

Документация на все это где-то тут.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using TaskScheduler;
 
namespace TasksExample
{
    class Program
    {
        static int count = 0;
 
        const int TASK_FLAG_HIDDEN = (int)TaskScheduler._TASK_ENUM_FLAGS.TASK_ENUM_HIDDEN;
 
        static void EnumAllTasks()
        {
            TaskScheduler.TaskScheduler taskService = new TaskScheduler.TaskScheduler();
            taskService.Connect();
 
            var rootFolder = taskService.GetFolder("\\");
 
            EnumFolderTasks(rootFolder);
 
            Console.WriteLine("Found {0} tasks!", count);
        }
 
        static void EnumFolderTasks(ITaskFolder fld)
        {
            foreach (IRegisteredTask task in fld.GetTasks(TASK_FLAG_HIDDEN))
                ActOnTask(task);
            foreach (ITaskFolder sfld in fld.GetFolders(TASK_FLAG_HIDDEN))
                EnumFolderTasks(sfld);
        }
 
        static void ActOnTask(IRegisteredTask t)
        {
            count++;
            Console.WriteLine(t.Name);
            // Do something interesting here
        }
 
        static void Main(string[] args)
        {
            EnumAllTasks();
 
            Console.ReadKey();
        }
    }
}
0
0 / 0 / 0
Регистрация: 25.08.2018
Сообщений: 10
02.09.2018, 23:30  [ТС]
Спасибо, сейчас попробую...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2018, 23:30
Помогаю со студенческими работами здесь

Запуск скрипта на сервере при входе определенного пользователя
Как сделать так чтобы при входе определенного пользователя на сервера запускался скрипт? Надо чтобы скрипт именно запускался на сервере!!!...

Запуск программы при старте системы не работает
Всем привет! Стоит операционная система (uname -a): Linux host 4.15.0-47-generic #50-Ubuntu SMP Wed Mar 13 10:44:52 UTC 2019 x86_64...

Запуск сервера по необходимости, а не при старте системы
Добрый день! Не очень пока разобрался в архитектуре сервера, и появилась проблемка: при запуске компьютера сервер запускается автоматически...

Запуск графической оболочки при старте системы
Здравствуйте! Помогите пожалуйста: решил удалить GNOME с Fedora 21 и поставить KDE. Всё бы ничего, да не могу настроить запуск оболочки...

Как отключить подтверждение на запуск exe-файла при старте системы?
при запуске программы не нужно подтверждения для запуска, но если командой reg ADD...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru