• XSS.stack #1 – первый литературный журнал от юзеров форума

Добавляемся в авторан | Task Scheluder COM

Пожалуйста, обратите внимание, что пользователь заблокирован
А как schtasks.exe это делает от юзера?
К сожалению , я плохо разбираюсь в СОМ, чтобы понять, как он добавляет. У меня на десятке рабочей не добавил, но у меня юак включен на максимум.
Могу ошибаться, но мне кажется, что всегда это был вектор закрепа админ-система. Все эти говномайнеры в 17-18 гг делали автозапуск через "cmd /c at.exe что-то там".
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Все эти говномайнеры в 17-18 гг делали автозапуск через "cmd /c at.exe что-то там".
Ну вот как раз at.exe вроде требовала прав админа, а шедулер, насколько я помню, прекрасно от юзера работал.
 
Код, что выложил ТС, всегда будет требовать админа(msdn в помощь), так же админа будет требовать если загружаться с загрузкой системы, так же админ требуется, если пытаться писать не в корневой каталог планировщика, так же админ обязателен, при установке триггера на события безопасности системы.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
В %windir%\tasks можно писать лишь админу, хоть на десятке, хоть на семерке
Сюда писались таски для версии 1.0

И скорее всего проблема в TASK_TRIGGER_LOGON.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Сюда писались таски для версии 1.0

И скорее всего проблема в TASK_TRIGGER_LOGON.
Да, как оказалось - проблема именно в этом. Если создавать TASK_TRIGGER_TIME - всё отлично.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Хотя нет. Как оказалось нужно было просто указать при входе какого юзера запускать задание:
C:
hRes = taskDef->get_Triggers(&triggers);
if (SUCCEEDED(hRes))
{
    ITrigger* trigger = nullptr;
    hRes = triggers->Create(TASK_TRIGGER_LOGON, &trigger);
    if (SUCCEEDED(hRes))
    {
        ILogonTrigger* logonTrigger = nullptr;
        hRes = trigger->QueryInterface(IID_ILogonTrigger, (void**)&logonTrigger);
        if (SUCCEEDED(hRes))
        {
            hRes = logonTrigger->put_Id(_bstr_t(L"Default"));
            hRes = logonTrigger->put_UserId(_bstr_t(L"DESKTOP-XXXXXXX\\admin"));
            hRes = logonTrigger->put_EndBoundary(_bstr_t(L"2025-05-02T08:00:00"));
            logonTrigger->Release();
        }
        trigger->Release();
    }
    triggers->Release();
}
 
Хотя нет. Как оказалось нужно было просто указать при входе какого юзера запускать задание:
C:
hRes = taskDef->get_Triggers(&triggers);
if (SUCCEEDED(hRes))
{
    ITrigger* trigger = nullptr;
    hRes = triggers->Create(TASK_TRIGGER_LOGON, &trigger);
    if (SUCCEEDED(hRes))
    {
        ILogonTrigger* logonTrigger = nullptr;
        hRes = trigger->QueryInterface(IID_ILogonTrigger, (void**)&logonTrigger);
        if (SUCCEEDED(hRes))
        {
            hRes = logonTrigger->put_Id(_bstr_t(L"Default"));
            hRes = logonTrigger->put_UserId(_bstr_t(L"DESKTOP-XXXXXXX\\admin"));
            hRes = logonTrigger->put_EndBoundary(_bstr_t(L"2025-05-02T08:00:00"));
            logonTrigger->Release();
        }
        trigger->Release();
    }
    triggers->Release();
}
Еще можно сделать триггер на события системы, получается не так грубо и некая отложенная автозагрузка со 100% вероятностью срабатывания.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх