Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Попробуйте унаследованную команду «at.exe», создающую унаследованные задания, работающие от имени SYSTEM. Главная проблема будет в том, чтобы указать время в команде +1 минута от текущего (впрочем, примеры арифметических операций в пакетных файлах для времени на форуме, помнится, были).

Если по Вашим условиям допустимо использование WSH, и в момент исполнения скрипта существует Проводник, то вот (пример для Блокнота):
читать дальше »
Код: Выделить весь код
Option Explicit

Const strPath2Tasks = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}"

Dim strComputer

Dim objSWbemServicesEx
Dim objSWbemObjectEx
Dim objSWbemDateTime

Dim dtNow, intInterval
Dim lngJobID

Dim objShell, objFolder, objFolderItem, objVerb


' Задаём время выполнения минуту назад, в результате задание будет намечено
' на следующий день
intInterval = -1

Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

With CreateObject("WbemScripting.SWbemDateTime")
    ' Вычисляем время задания, отталкиваясь от текущей даты
    dtNow       = DateAdd("n", intInterval, Now())
    
    .Hours      = Hour(dtNow)
    .Minutes    = Minute(dtNow)
    .Seconds    = Second(dtNow)
    
    ' Получаем разницу между временем UTC и текущим поясным временем
    For Each objSWbemObjectEx In objSWbemServicesEx.InstancesOf("Win32_TimeZone")
        .UTC    = objSWbemObjectEx.Bias
        
        Exit For
    Next
    
    ' 6-й параметр метода .Create() управляет разрешением взаимодействовать с рабочим столом
    ' текущего пользователя, в данном случае — True, т.е. — разрешено.
    If objSWbemServicesEx.Get("Win32_ScheduledJob").Create( _
        "Notepad.exe", String(8, "*") & Mid(.Value, 9), , , , True, lngJobID) = 0 Then
        WScript.Echo "Создано запланированное задание #" & lngJobID & "."

        Set objShell  = WScript.CreateObject("Shell.Application")
        ' Подключаемся к виртуальной папке «Назначенные задания»
        Set objFolder = objShell.NameSpace(strPath2Tasks)
        
        If Not (objFolder Is Nothing) Then
            ' Перебираем все пункты…
            For Each objFolderItem In objFolder.Items
                ' …пока не дойдём до трубуемого нам «At…»
                If objFolderItem.Name = "At" & CStr(lngJobID) Then
                    ' Перебираем глаголы…
                    For Each objVerb In objFolderItem.Verbs
                        ' …пока не дойдём до трубуемого нам «В&ыполнить»
                        If objVerb.Name = "В&ыполнить" Then
                            ' Исполняем этот глагол
                            objVerb.DoIt
                            
                            ' Величина времени задержки подбирается опытным путём
                            ' и зависит от запускаемого заданием приложения
                            WScript.Sleep 1000
                            WScript.Echo "Запущено задание #" & lngJobID & "."
                            
                            Exit For
                        End If
                    Next
                    
                    Exit For
                End If
            Next
        End If
        
        Set objFolder = Nothing
        Set objShell  = Nothing
        
        ' Удаляем задание
        If objSWbemServicesEx.Get("Win32_ScheduledJob.JobId=" & lngJobID & "").Delete() = 0 Then
            WScript.Echo "Удалено задание #" & lngJobID & "."
        Else
            WScript.Echo "Не удалось удалить задание #" & lngJobID & "."
        End If
    Else
        WScript.Echo "Не удалось создать запланированное задание."
    End If
End With

Set objSWbemServicesEx = Nothing

WScript.Quit 0


Наконец, возможно, самым простым для Вас будет использовать стороннее средство — «psexec.exe» из комплекта PsTools.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:20, 18-02-2012 | #4