Что нового

Получить список заданий планировщика Windows

erlik

Продвинутый
Сообщения
317
Репутация
84
Нужно получить список заданий планировщика плюс всю инфу по заданиям: когда, кто и зачем :smile: К моему большому сожалению, класс WMI Win32_ScheduledJob не работает с заданиями созданными не им. То есть через UI или еще как то.
Знаю, что в семерке это дело вроде в реестре есть,
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Schedule\TaskCache\Tasks\{GUID}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent
но нужен универсальный способ - чтобы и для XP работал.
Получать вывод от schtasks.exe - тоже не выход: там нет инфы по исполняемому файлу и прочим данным.
PS: CCleaner и иже с ними как то ведь эти задания видят... Интересно, откуда они их считывают?


Добавлено:
Сообщение автоматически объединено:

Недоглядел, что SchTasks, оказывается, может выдавать более подробную инфу:
Код:
SchTasks /Query /V /FO LIST
. В принципе, если все это распарсить - будет достаточно.
PS:Тему пока не закрываю - может кто знает как это делается через COM API.


Добавлено:
Сообщение автоматически объединено:

Нарыл в msdn API для заданий - для семерки используется интерфейс ITaskService
и для обращения к нему синтаксис "Schedule.Service", а для XP ITaskScheduler. Но синтаксис для обращения к последнему интерфейсу я так и не нашел.
Поэтому пока накропал вот это - для семерки, но сам проверить не могу, так как сижу на Хрюше :smile:
Просьба - у кого на компе семерка, если не трудно, проверьте пожалуйста этот код.

Код:
Local $objTaskService,$objRootFolder,$objTasks
	$objTaskService = ObjCreate("Schedule.Service")
	$objRootFolder = $objTaskService.GetFolder(""); получаем папку заданий
    $objTasks = $objRootFolder.GetTasks(0); получаем коллекцию объектов заданий
For $task in $objTasks
    ConsoleWrite($task.Definition.Settings.WakeToRun&@CRLF)
	ConsoleWrite($task.Definition.Settings.Enabled&@CRLF)
	ConsoleWrite($task.Definition.Settings.Hidden&@CRLF)
	ConsoleWrite($task.Definition.Principal.LogonType&@CRLF)
	ConsoleWrite($task.Definition.Principal.UserId&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Author&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Date&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Description&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.SecurityDescriptor&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Version&@CRLF)
	ConsoleWrite($task.RunningTask.EnginePID&@CRLF)
	ConsoleWrite($task.RunningTask.Name&@CRLF)
	ConsoleWrite($task.RunningTask.Path&@CRLF)
	ConsoleWrite($task.RunningTask.State&@CRLF)
	ConsoleWrite($task.RunningTask.CurrentAction&@CRLF)
    ConsoleWrite($task.Name&@CRLF)
    ConsoleWrite($task.Path&@CRLF)
Next


    $objTasks = $objTaskService.GetRunningTasks(); получаем коллекцию запущенных заданий
    For $task in $objTasks
    ConsoleWrite($task.Definition.Settings.WakeToRun&@CRLF)
	ConsoleWrite($task.Definition.Settings.Enabled&@CRLF)
	ConsoleWrite($task.Definition.Settings.Hidden&@CRLF)
	ConsoleWrite($task.Definition.Principal.LogonType&@CRLF)
	ConsoleWrite($task.Definition.Principal.UserId&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Author&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Date&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Description&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.SecurityDescriptor&@CRLF)
	ConsoleWrite($task.Definition.RegistrationInfo.Version&@CRLF)
	ConsoleWrite($task.RunningTask.EnginePID&@CRLF)
	ConsoleWrite($task.RunningTask.Name&@CRLF)
	ConsoleWrite($task.RunningTask.Path&@CRLF)
	ConsoleWrite($task.RunningTask.State&@CRLF)
	ConsoleWrite($task.RunningTask.CurrentAction&@CRLF)
	ConsoleWrite($task.Name&@CRLF)
	ConsoleWrite($task.Path&@CRLF)
Next
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Просьба - у кого на компе семерка, если не трудно, проверьте пожалуйста этот код.
Код:
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\Mur\Desktop\123.au3"
C:\Users\Mur\Desktop\123.au3 (3) : ==> The requested action with this object has failed.:
$objRootFolder = $objTaskService.GetFolder("")
$objRootFolder = $objTaskService.GetFolder("")^ ERROR
>Exit code: 1    Time: 0.209

(Скомпилированный и по F5)
Ах, да... чуть не забыл - Windows 7 x64
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
на ХР тоже ошибка
Код:
Variable must be of type "Object".:
$objRootFolder = $objTaskService.GetFolder("")
$objRootFolder = $objTaskService^ ERROR
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Спасибо всем откликнулся :smile:
В общем, кой чего сам подправил и проверил. Вот так работает (только для семерки)

Код:
Local $objTaskService,$objRootFolder,$objTasks
	$objTaskService = ObjCreate("Schedule.Service")
	$objTaskService.Connect('', '', '', '');  serverName,user,domain,password; для подключения к локальной службе параметры пустые;
	$objRootFolder = $objTaskService.GetFolder("\")   ;  Gets a folder that contains tasks at a specified location.;   получаем корневую папку заданий
	               ;$objTaskService.GetFolders(0)     ;  возвращает ITaskFolderCollection; Gets all the subfolders in the folder.
	$objTasks = $objRootFolder.GetTasks(0)            ; возвращает IRegisteredTaskCollection; свойства:   _NewEnum, Count,Item;  получаем коллекцию объектов заданий 
	ConsoleWrite("Число заданий: " & $objTasks.Count&@CRLF)		 
	For $task in $objTasks
	
    ConsoleWrite($task.Definition.Data&@CRLF)
	ConsoleWrite($task.Definition.Settings.WakeToRun&@CRLF)
	ConsoleWrite($task.Definition.Settings.Enabled&@CRLF)
	ConsoleWrite($task.Definition.Settings.Hidden&@CRLF)
	ConsoleWrite($task.Definition.Settings.DisallowStartIfOnBatteries&@CRLF)
	ConsoleWrite($task.Definition.Settings.StopIfGoingOnBatteries&@CRLF)
	ConsoleWrite($task.Definition.Settings.ExecutionTimeLimit&@CRLF)
	ConsoleWrite($task.Definition.Settings.Priority&@CRLF)
	ConsoleWrite($task.Definition.Settings.RunOnlyIfIdle&@CRLF)
	ConsoleWrite($task.Definition.Settings.RunOnlyIfNetworkAvailable&@CRLF)
	ConsoleWrite($task.Definition.Settings.AllowDemandStart&@CRLF)
    ConsoleWrite($task.Definition.Settings.AllowHardTerminate&@CRLF)
    ConsoleWrite($task.Definition.Settings.Compatibility&@CRLF)
    ConsoleWrite($task.Definition.Settings.DeleteExpiredTaskAfter&@CRLF)
    ConsoleWrite($task.Definition.Settings.MultipleInstances&@CRLF)
	ConsoleWrite($task.Definition.Settings.StartWhenAvailable&@CRLF)
    ConsoleWrite($task.Definition.Settings.WakeToRun&@CRLF)
    ConsoleWrite($task.Definition.Settings.RestartCount&@CRLF)
    ConsoleWrite($task.Definition.Settings.RestartInterval &@CRLF)
	ConsoleWrite($task.Definition.Principal.LogonType&@CRLF)
	ConsoleWrite($task.Definition.Principal.UserId&@CRLF)
	ConsoleWrite('Author: ' & $task.Definition.RegistrationInfo.Author&@CRLF)
	ConsoleWrite('Date: ' &$task.Definition.RegistrationInfo.Date&@CRLF)
	ConsoleWrite('Description: ' &$task.Definition.RegistrationInfo.Description&@CRLF)
	ConsoleWrite('SecurityDescriptor: ' &$task.Definition.RegistrationInfo.SecurityDescriptor&@CRLF)
	ConsoleWrite('Version: ' &$task.Definition.RegistrationInfo.Version&@CRLF)
	ConsoleWrite('URI: ' &$task.Definition.RegistrationInfo.URI&@CRLF)
	ConsoleWrite('Source: ' &$task.Definition.RegistrationInfo.Source&@CRLF)
	ConsoleWrite('Documentation: ' &$task.Definition.RegistrationInfo.Documentation&@CRLF)
	ConsoleWrite('Path: ' &$task.Path&@CRLF)
	ConsoleWrite('State: ' &$task.State&@CRLF)
	$task.Definition.Actions ; коллекция действий
	ConsoleWrite($task.Definition.Actions.Count&@CRLF); число элементов в коллекции действий
	
Next

и второй вариант для запущенных заданий
Код:
Local $objTaskService,$objRootFolder,$objTasks
	$objTaskService = ObjCreate("Schedule.Service")
	$objTaskService.Connect('', '', '', '');
    $objTasks = $objTaskService.GetRunningTasks(1); возвращает IRunningTaskCollection,   получаем коллекцию запущенных заданий;0,- все кроме скрытых, 1 - включая скрытые
                                   ;свойства   _NewEnum, Count,Item
	;$objTasks._NewEnum
	ConsoleWrite("Число запущенных заданий: " & $objTasks.Count&@CRLF); число элементов в коллекции
	For $task in $objTasks
	ConsoleWrite($task.EnginePID&@CRLF); ?
	ConsoleWrite($task.Name&@CRLF); ?
	ConsoleWrite($task.Path&@CRLF); ?
	ConsoleWrite($task.State&@CRLF); ?
	ConsoleWrite($task.CurrentAction&@CRLF); ?
	
	 
 Next


В общем буду ковырять дальше API.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
вот что выдало в семерке х64

первый скрипт
Число заданий: 1
0
False
True
False
False
False
P3D
7
False
False
True
True
3
0
0
False
False
0
0
3
Brut
Author: Piriform Ltd
Date: 0
Description: 0
SecurityDescriptor:
Version: 0
URI: 0
Source: 0
Documentation: 0
Path: \CCleanerSkipUAC
State: 3
1

второй
Число запущенных заданий: 2
1596
SystemSoundsService
\Microsoft\Windows\Multimedia\SystemSoundsService
4
Microsoft PlaySoundService Class
1596
MsCtfMonitor
\Microsoft\Windows\TextServicesFramework\MsCtfMonitor
4
MsCtfMonitor task handler
первый запускался как 64-битный и 32-битный. результат одинаков
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Выдаёт в таком же виде.
Первый:
Число заданий: 5
0
False
True
False
False
False
P3D
7
False
False
True
True
3
0
0
False
False
0
0
3
Mur
Author: Piriform Ltd
Date: 0
Description: 0
SecurityDescriptor:
Version: 0
URI: 0
Source: 0
Documentation: 0
Path: \CCleanerSkipUAC
State: 3
1
0
False
True
False
True
True
PT72H
7
False
False
True
True
3
0
2
False
False
0
0
4
0
Author: 0
Date: 0
Description: 0
SecurityDescriptor:
Version: 0
URI: 0
Source: 0
Documentation: 0
Path: \SidebarExecute
State: 3
1
0
False
False
False
False
False
PT72H
7
False
False
True
True
2
0
2
False
False
0
0
4
0
Author: SkypeSetup
Date: 0
Description: 0
SecurityDescriptor:
Version: 0
URI: 0
Source: 0
Documentation: 0
Path: \{419D89DC-5087-4EDE-BC70-35C336ECF290}
State: 1
1
0
False
False
False
False
True
PT72H
7
False
False
True
True
2
0
2
False
False
0
0
3
Mur-PC\Mur
Author: 0
Date: 0
Description: 0
SecurityDescriptor:
Version: 0
URI: 0
Source: 0
Documentation: 0
Path: \{8DCA5BA3-47C6-4995-BFF0-D26EB47D6518}
State: 1
1
0
False
False
False
False
True
PT72H
7
False
False
True
True
2
0
2
False
False
0
0
3
Mur-PC\Mur
Author: 0
Date: 0
Description: 0
SecurityDescriptor:
Version: 0
URI: 0
Source: 0
Documentation: 0
Path: \{CB758F7F-AEB3-4C4D-997A-449F19D02DA3}
State: 1
1
второй:
Число запущенных заданий: 2
1720
SystemSoundsService
\Microsoft\Windows\Multimedia\SystemSoundsService
4
Microsoft PlaySoundService Class
1720
MsCtfMonitor
\Microsoft\Windows\TextServicesFramework\MsCtfMonitor
4
MsCtfMonitor task handler
Вот, кстати, нашёл у себя пару файлов, может чем помогут...
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Mur, joiner еще раз большое вам спасибо.
У меня тоже выдавало примерно тоже самое. Непонятно, почему дата везде определяется как 0. Возможно, нужно другие свойства использовать.
Mur тебе отдельная благодарность за библиотечку CCBtaskplanerudf.au3
Сравнил со своим кодом, нашел кой-чего недостающего для себя.
Осталось допилить получение исполняемого файла и аргументов. В CCBtaskplanerudf.au3 есть пример только для установки данных свойств, а вот как получить их не совсем ясно.
Вроде так: (сам пока проверить не могу)
Код:
Local $objTaskService,$objRootFolder,$objTasks
	$objTaskService = ObjCreate("Schedule.Service")
	$objTaskService.Connect()
	$objRootFolder = $objTaskService.GetFolder("\")  
	$objTasks = $objRootFolder.GetTasks(0)   
		For $task in $objTasks
            ConsoleWrite('Name task: ' &$task.Name&@CRLF)
			For $oAction In $task.Definition.Actions()
			ConsoleWrite('Path: ' &$oAction.Path()&@CRLF)
		    ConsoleWrite('WorkingDirectory: ' &$oAction.WorkingDirectory()&@CRLF)
	        ConsoleWrite('Arguments: ' &$oAction.Arguments()&@CRLF)
	     Next
    Next


ЗЫ: Что странно, для XP в интернете ни одного примера.:(
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Вроде так: (сам пока проверить не могу)
Вот результат:
Name task: CCleanerSkipUAC
Path: "C:\Program Files\CCleaner\CCleaner.exe"
WorkingDirectory: 0
Arguments: $(Arg0)
Name task: SidebarExecute
Path: C:\Program Files\Windows Sidebar\sidebar.exe
WorkingDirectory: 0
Arguments: /stopHidingGadgets
Name task: {419D89DC-5087-4EDE-BC70-35C336ECF290}
Path: C:\Program Files (x86)\Skype\\Phone\Skype.exe
WorkingDirectory: 0
Arguments: 0
Name task: {8DCA5BA3-47C6-4995-BFF0-D26EB47D6518}
Path: C:\Games\Hazen\bin\Hazen.exe
WorkingDirectory: 0
Arguments: 0
Name task: {CB758F7F-AEB3-4C4D-997A-449F19D02DA3}
Path: C:\Games\Hazen\bin\Hazen.exe
WorkingDirectory: 0
Arguments: 0
ЗЫ: Что странно, для XP в интернете ни одного примера.
Видел парочку, но, почему-то, мне сегодня недоступны все поисковые системы. Как только это разрешится, я постараюсь найти пример для хр.
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
Добавил в скрипт получение информации триггеров.
Если все верно - то получился практически полный инвертаризатор инфы по заданиям планировщика для Windows 7.
Код:
;массив состояний задания
Dim $aTaskState[5] = ['неизвестно', 'отключено', 'в очереди', 'готово', 'выполняется']

; массив для конвертации типов триггеров в строкой эквивалент
Dim $aTypeTrigger[12]
$aTypeTrigger[0]  = 'TASK_TRIGGER_EVENT'
$aTypeTrigger[1]  = 'TASK_TRIGGER_TIME'
$aTypeTrigger[2]  = 'TASK_TRIGGER_DAILY'
$aTypeTrigger[3]  = 'TASK_TRIGGER_WEEKLY'
$aTypeTrigger[4]  = 'TASK_TRIGGER_MONTHLY'
$aTypeTrigger[5]  = 'TASK_TRIGGER_MONTHLYDOW'
$aTypeTrigger[6]  = 'TASK_TRIGGER_IDLE'
$aTypeTrigger[7]  = 'TASK_TRIGGER_REGISTRATION'
$aTypeTrigger[8]  = 'TASK_TRIGGER_BOOT'
$aTypeTrigger[9]  = 'TASK_TRIGGER_LOGON'
$aTypeTrigger[11] = 'TASK_TRIGGER_SESSION_STATE_CHANGE'

; массив для конвертации типов логонов в строкой эквивалент
Dim $aLogonType[7]
$aLogonType[0] = 'TASK_LOGON_NONE'
$aLogonType[1] = 'TASK_LOGON_PASSWORD'
$aLogonType[2] = 'TASK_LOGON_S4U'
$aLogonType[3] = 'TASK_LOGON_INTERACTIVE_TOKEN'
$aLogonType[4] = 'TASK_LOGON_GROUP'
$aLogonType[5] = 'TASK_LOGON_SERVICE_ACCOUNT'
$aLogonType[6] = 'TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD'


Local $objTaskService, $objRootFolder, $objTasks, $oColActions, $oColTriggers, $TriggerEvent
	$objTaskService = ObjCreate("Schedule.Service")   ;  возвращает объект ITaskService (библиотека Taskschd.dll  - только Window Vista, 7 8)
	$objTaskService.Connect('', '', '', '')           ;  serverName,user,domain,password; для подключения к локальной службе параметры пустые;
	$objRootFolder = $objTaskService.GetFolder("\")   ;  ITaskFolder;  возвращает корневую папку заданий
	               ;$objTaskService.GetFolders(0)     ;  ITaskFolderCollection; возвращает коллекцию папок в корневой папке заданий; аргумент 0 - не используется, зарезервирован на будущее
	$objTasks = $objRootFolder.GetTasks(1)            ;  IRegisteredTaskCollection; возвращает коллекцию объектов заданий; 
													  ;  аргументы: 0,- все кроме скрытых, 1 - включая скрытые; свойства: _NewEnum, Count,Item;  
	ConsoleWrite("Число заданий: " & $objTasks.Count&@CRLF)		 
	For $task in $objTasks
	ConsoleWrite('Task Name: '                 & $task.Name & @CRLF)
	ConsoleWrite('Task Path: '                 & $task.Path & @CRLF); ключ реестра ?
	ConsoleWrite('Task State: '                & $aTaskState[$task.State] & @CRLF)
	If $task.State = 4 Then 
		ConsoleWrite('Process ID: '            & $task.EnginePID & @CRLF)
	    ConsoleWrite('CurrentAction: '         & $task.CurrentAction & @CRLF)
	EndIf
	$oColActions=$task.Definition.Actions()              ; IActionCollection; возвращает коллекцию действий; свойства: Context, Count, Item, XmlText, _NewEnum
	
	ConsoleWrite($task.Definition.Actions.Count & @CRLF) ; число элементов в коллекции действий; 
	
	For $oAction In  $oColActions
		ConsoleWrite('Program Path: '          & $oAction.Path & @CRLF)
		ConsoleWrite('WorkingDirectory: '      & $oAction.WorkingDirectory & @CRLF)
	    ConsoleWrite('Arguments: '             & $oAction.Arguments & @CRLF)
		ConsoleWrite('ID Action: '             & $oAction.Id & @CRLF)
		ConsoleWrite('Type Action: '           & $oAction.Type & @CRLF)
	Next
	
    
    $oColTriggers = $task.Definition.Triggers() ;  ITriggerCollection; возвращает коллекцию триггеров
												;  свойства: Count, Item, _NewEnum
	For $oTrigger In  $oColTriggers
		ConsoleWrite('Trigger Id: '            & $oTrigger.Id & @CRLF)
		ConsoleWrite('Trigger Enabled: '       & $oTrigger.Enabled & @CRLF)
	    ConsoleWrite('Trigger StartBoundary: ' & $oTrigger.StartBoundary & @CRLF)
		ConsoleWrite('Trigger EndBoundary: '   & $oTrigger.EndBoundary & @CRLF)
		ConsoleWrite('Trigger TimeLimit: '     & $oTrigger.ExecutionTimeLimit & @CRLF)
		ConsoleWrite('Trigger Repetition: '    & $oTrigger.Repetition & @CRLF)
		$TriggerEvent = $oTrigger.Type
		ConsoleWrite('Trigger Type: '          & $aTypeTrigger[$TriggerEvent]& @CRLF)
	
	    If $TriggerEvent = 3 Or $TriggerEvent = 5 Then
		    ConsoleWrite('DaysOfWeek: '        &$oTrigger.DaysOfWeek & @CRLF)
	    EndIf

	    If $TriggerEvent = 4 Then
		    ConsoleWrite('DaysOfMonth: '       &$oTrigger.DaysOfMonth & @CRLF)
		    ConsoleWrite('MonthsOfYear: '      &$oTrigger.MonthsOfYear & @CRLF)
	    EndIf

	    If $TriggerEvent = 5 Then
			ConsoleWrite('WeeksOfMonth: '      &$oTrigger.WeeksOfMonth & @CRLF)
		EndIf

	    If $TriggerEvent = 2 Then
		    ConsoleWrite('DaysInterval: '      &$oTrigger.DaysInterval & @CRLF)
	    EndIf
	Next
      
	ConsoleWrite('Data: '                      & $task.Definition.Data() & @CRLF)
	ConsoleWrite('Enabled: '                   & $task.Definition.Settings.Enabled & @CRLF)
	ConsoleWrite('Hidden: '                    & $task.Definition.Settings.Hidden & @CRLF)
	ConsoleWrite('DisallowStartIfOnBatteries: '& $task.Definition.Settings.DisallowStartIfOnBatteries & @CRLF)     ; запрещать или нет запуск при питании от батарей
	ConsoleWrite('StopIfGoingOnBatteries: '    & $task.Definition.Settings.StopIfGoingOnBatteries & @CRLF)         ; останавливать или нет при переходе на питание от батарей
	ConsoleWrite('ExecutionTimeLimit: '        & $task.Definition.Settings.ExecutionTimeLimit & @CRLF)
	ConsoleWrite('Priority: '                  & $task.Definition.Settings.Priority & @CRLF)
	ConsoleWrite('RunOnlyIfIdle: '             & $task.Definition.Settings.RunOnlyIfIdle & @CRLF)
	ConsoleWrite('RunOnlyIfNetworkAvailable: ' & $task.Definition.Settings.RunOnlyIfNetworkAvailable & @CRLF)
	ConsoleWrite('AllowDemandStart: '          & $task.Definition.Settings.AllowDemandStart & @CRLF)              ; разрешать или нет выполнение задачи по требованию 
    ConsoleWrite('AllowHardTerminate: '        & $task.Definition.Settings.AllowHardTerminate & @CRLF)            ; делать или нет принудительную остановку задачи, если она не прекращается по запросу
    ConsoleWrite('Compatibility: '             & $task.Definition.Settings.Compatibility & @CRLF)
    ConsoleWrite('DeleteExpiredTaskAfter: '    & $task.Definition.Settings.DeleteExpiredTaskAfter & @CRLF)
    ConsoleWrite('MultipleInstances: '         & $task.Definition.Settings.MultipleInstances & @CRLF)
	ConsoleWrite('StartWhenAvailable: '        & $task.Definition.Settings.StartWhenAvailable & @CRLF)            ; запускать или нет задачу, если пропущен плановый запуск
    ConsoleWrite('WakeToRun: '                 & $task.Definition.Settings.WakeToRun & @CRLF)
    ConsoleWrite('RestartCount: '              & $task.Definition.Settings.RestartCount & @CRLF)
    ConsoleWrite('RestartInterval: '           & $task.Definition.Settings.RestartInterval & @CRLF)
	ConsoleWrite('Principal.Id: '              & $task.Definition.Principal.Id & @CRLF)
	ConsoleWrite('Principal.DisplayName: '     & $task.Definition.Principal.DisplayName & @CRLF)
	ConsoleWrite('Principal.RunLevel: '        & $task.Definition.Principal.RunLevel & @CRLF)                      ; TASK_RUNLEVEL_LUA -0;TASK_RUNLEVEL_HIGHEST -1
	ConsoleWrite('Principal.LogonType: '       & $aLogonType[$task.Definition.Principal.LogonType]& @CRLF)
	ConsoleWrite('Principal.GroupId: '         & $task.Definition.Principal.GroupId & @CRLF)
	ConsoleWrite('Principal.UserId: '          & $task.Definition.Principal.UserId & @CRLF)
	ConsoleWrite('Author: '                    & $task.Definition.RegistrationInfo.Author  &@CRLF)
	ConsoleWrite('Date: '                      & $task.Definition.RegistrationInfo.Date & @CRLF)
	ConsoleWrite('Description: '               & $task.Definition.RegistrationInfo.Description & @CRLF)
	ConsoleWrite('SecurityDescriptor: '        & $task.Definition.RegistrationInfo.SecurityDescriptor & @CRLF)
	ConsoleWrite('Version: '                   & $task.Definition.RegistrationInfo.Version & @CRLF)
	ConsoleWrite('URI: '                       & $task.Definition.RegistrationInfo.URI & @CRLF)
	ConsoleWrite('Source: '                    & $task.Definition.RegistrationInfo.Source & @CRLF)
	ConsoleWrite('Documentation: '             & $task.Definition.RegistrationInfo.Documentation & @CRLF)


Next

Mur
Что касается XP - примеры использования интерфейса Task Scheduler 1.0 Interfaces (ITaskScheduler) в принципе то есть. Но на языках типа C#, C++. А у них нет метода ObjCreate() (или CreateObject() как в VBScript\MSJscript). И для доступа к COM интерфейсам они используют свои классы-обертки. Поэтому самое главное - это непонятно, что писать для создания объекта в ObjCreate("appname.objectype")
Попытки выудить эту инфу из oleviewer.exe ничего не дали.


Добавлено:
Сообщение автоматически объединено:

Оказывается вот чем собака то зарыта - для XP не существует зарегистрированного ActiveX расширения для этого COM интерфейса. :scratch: И доступ к планировщику осуществляется непосредственно через вызов функций mstask.dll. Что ж, ничего не попишешь, придется ковырять эту dll-ку.
 

mikzin

Новичок
Сообщения
80
Репутация
0
как сделать свои изменения в планировщик windows?

допустим, если Program Path (переменная $oAction.Path) содержит
Код:
C:\Program Files\Common Files\AV\ESET NOD32 Antivirus 6.0\upgrade.exe


а)отключить
б)удалить
данное задание?
 
Верх