Доброго времени суток. Пишу драйвер, который должен работать на WinXP SP2 не зависимо от того, какие обновления установлены на сам SP2. Желательно чтобы он также работал на WinXP SP0 и WinXP SP1. Сам драйвер должен при запуске каждого процесса в системе сначала проверять наличие етого процесса, в том числе и откуда именно он запускается, в текстовом файле. Текстовый файл C:\needrun.txt имеет следующий формат: C:\WINDOWS\system32\calc.exe;user2;pass2 C:\WINDOWS\system32\notepad.exe;user3;pass3 При наличии процесса, что запускается, в текстовом файле, етот процесс нужно запустить под указаным пользователем. Имена пользователей и их пароли известны. Если же процесс, что запускается, отсутствует в текстовом файле, никакие действия не предпринимаются. Для реализации такой функциональности драйвера он сначала при запуске каждого процесса проверяет его наличие в текстовом файле. Если он существует, то драйвер убивает процесс. После етого убитый процесс нужно запустить из драйвера от имени указанного пользователя. Отслеживать и убивать нужные процессы получается. Как запускать нужные процессы из режима ядра под именем указанного пользователя? Искал и читал статьи. Но там сам запуск процесса очень зависим от версии обновления системных файлов Windows. К тому же имперсонация возможна только из пользовательского режима. Хотел бы подробнее почитать про возможность подобного запуска процесса. Желательно с рабочими исходниками, где ето можно посмотреть. Зарание благодарен за ответ.
а зачем перезапускать процесс ? можно просто сменить его токен на нужный NtOpenProcessToken NtSetInformationToken
kropalik ты не знаешь как получить имя пользователя по его SID ? я кроме метода с реестром ничего не смог найти, поделись если в курсе.