Здравствуйте kkv, вы писали:
AF>>Ничего, кроме здравого смысла. Microsoft считает, что эта привилегия слишком AF>>сильная, чтобы давать ее обычным пользователям. Буквально на MSDN написано AF>>следующее:
AF>>В чем конкретно заключается эта сила, я сейчас пытаюсь выяснить в AF>>microsoft.public.platformsdk.security.
kkv>Я думаю, что тем и сильна, что замена маркера уровня процесса позволяет создавать процессы от имени другого пользователя —
Не все так просто. CreateProcessWithLogonW тоже позволяет создавать процесс от имени другого пользователя, но не требует никаких привилегий и работает через RunAs сервис. Спрашивается, если замена токена процесса такая обыденная операция, зачем городить весь этот огород с сервисом? Раздали бы всем SeAssignPrimaryToken и дело с концом.
С другой стороны, если я имею токен, я могу его имперсонировать и получить почти те же самые права доступа, что и создав новый процесс. Имперсонация не требует никаких дополнительных привилегий.
kkv> насколько мне помнится именно в это и выла первоначальная задача:
>>Задача такая: есть программа, которая должна запускать сабж. В MSDN'е есть фунцкия > >>CreateProcessAsUser(), но для нее надо выполнить LogonUser().
kkv>или я чего-то не понимаю или одно из двух...
Нет, это я чего-то не понимаю. Что касается поставленной задачи, то я не уверен, что токен, полученный из NTLM SSP будет иметь TOKEN_ASSIGN_PRIMARY permission, со всеми вытекающими. Проверяется экспериментом, но у меня сейчас нет подходящего кода, куда можно было бы вставить проверку, а делать с нуля времени нет.