CreateProcess + SeXXXPriveleges
От: Tujh Голландия  
Дата: 06.09.19 11:41
Оценка:
Добрый день!

У меня, с одной стороны, достаточно простой вопрос, а с другой — не такой уж он и простой, нагуглить что-то вразумительное не удалось и понять что не так до конца не получается.

Если кратко — есть один процесс, который запускает второй и есть необходимость выполнить действия во втором процессе, которые теоретически разрешены учётной записи пользователя, но не практике — не достаточно прав. В частности речь идёт и вызове SetLocalTime.
Код вызова оформлен, вроде бы как полагается:

OpenProcessToken -> AdjustTokenPrivileges -> SetLocalTime


но вот работает эта цепочка только из родительского приложения.

Добавил проверку через GetTokenInformation и получается, что родительский процесс имеет (token_privileges->PrivilegeCount == 24), а дочерний (token_privileges->PrivilegeCount == 6), таки образом количество priveleges для дочернего процесса значительно меньше чем для родительского.
Порождение дочернего процесса делается так:
CreateProcessAsUser( process_token, NULL, strCmdLine, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi )


process_token получен через тот же OpenProcessToken, возможно что в этом и ошибка.

Кто сталкивался с подобным — подскажите где почитать или как оно должно правильно быть?

Заранее благодарю!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.