Здравствуйте, Хацкевич Андрей Валентинович, Вы писали:
Согласно тому, что я писал в цитируемом выше топике, вам надо сделать следующее:
1. Скопировать переменные переданные вам в параметре pEnvrironment в свою область памяти и освободить pEnvironment через VirtualFree.
2. Добавить туда еще 3 переменные окружения: UserInitLogonServer, UserInitLogonScript, UserInitMprLogonScript.
3. Вызвать userinit
4. Удалить эти переменные окружения из своей копии переменных окружения. В дальнейшем, вы должны использовать эти переменные для запуска приложений в функции WlxStartApplication. Точнее, вы должны скомбинировать свои переменные с теми, что вам передадут в WlxStartApplication.
Т.е., вы получили эти три переменные. Далее, в WlxStartApplication вам пришла переменная pEnvironment, содержащая блок переменных окружения.
Вы берете, разбираете этот блок (там строки вида VAR1=VALUE\0VAR2=VALUE\0VAR3=VALUE\0\0), копируете все это дело к себе, потом добавляете туда три переменные (UserInitLogonServer, UserInitLogonScript, UserInitMprLogonScript), и уже новый блок передаете в SecurityHelper::CreateProcessAsUserOnDesktop. Еще раз, вам надо смержить те переменные которые вам передал Winlogon с теми, которые вы получили другими путями.
Если будут вопросы, с радостью отвечу.
Удачи.