Добрый день!
У меня, с одной стороны, достаточно простой вопрос, а с другой — не такой уж он и простой, нагуглить что-то вразумительное не удалось и понять что не так до конца не получается.
Если кратко — есть один процесс, который запускает второй и есть необходимость выполнить действия во втором процессе, которые теоретически разрешены учётной записи пользователя, но не практике — не достаточно прав. В частности речь идёт и вызове 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, возможно что в этом и ошибка.
Кто сталкивался с подобным — подскажите где почитать или как оно должно правильно быть?
Заранее благодарю!