Нужно из своего приложения (запущенного с правами пользователя) определить, когда запустится процесс с заданными параметрами. Какие есть варианты?
Боюсь, что никаких. Вариант с Policy DLLs не пройдёт ибо прав не хватит для записи в HKLM. Вариант с отладчиком, т.е. функция WaitForDebugEvent() и код CREATE_PROCESS_DEBUG_EVENT, тоже не сработает ибо это только для отлаживаемых процессов. Через драйвер можно, но опять таки прав не хватит для его загрузки. Остаются хуки на CreateProcessInternalW() во всех доступных процессах, только в этом случае в процессы с более высоким Integrity Level, а также системные и те, что в других сеансах, внедриться не получится.
Ну, я навскидку могу назвать пять. Но они чересчур заезжены. Это AppInit_DLLs? Есть соответствующая ветка и в CU, но опять же, хотелось бы чего-то более оригинального.
Ещё забыл написать про Event Tracing, которым Process Monitor пользуется в том числе, но не уверен, что там есть именно та информация, которая требуется. Ну и, конечно, можно настроить аудит доступа к исполняемым файлам, только это не будет работать под пользователем, т.к. по умолчанию эта политика выключена, а для включения нужны админские права. К тому же, придётся настраивать параметры аудита для всех интересующих исполняемых файлов. Больше навскидку ничего не скажу.
Это вряд ли. Оконные хуки, получение списка процессов по таймеру, открытие окна по таймеру, перехват сообщений десктопного окна, аттач к эксплореру (хотя последние два может и не такие популярные). Еще была какая-то подписка на уведомления от системы, не помню, есть ли там создание процессов. Это тема, кстати, может и пригодится, спасибо.
- админские права. + не отлов процессов без окон(сервисов и прочих) не оконные не будут отловлены. Посмотри в сторону WMI, вот только на счет прав не уверен(печалька) http://msdn.microsoft.com/en-us/library/aa390425.aspx