WTSQueryUserToken->DuplicateTokenEx->CreateProcessAsUser

Тема в разделе "WASM.WIN32", создана пользователем djmans, 18 янв 2010.

  1. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    В большинстве примеров указаная выше схема для запуска процессов. Я не могу понять одного момента, сто раз перечитал внимательно описание этих функций, зачем нужен вызов DuplicateTokenEx? Если WTSQueryUserToken возращает "obtains the primary access token", и CreateProcessAsUserW принимает "A handle to the primary token that represents a user. The handle must have the TOKEN_QUERY, TOKEN_DUPLICATE, and TOKEN_ASSIGN_PRIMARY access rights". Нафига нужна DuplicateTokenEx? Все работет без нее прекрасно...
     
  2. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Возможно, вызов DuplicateTokenEx() необходим для точной спецификации маски доступа, поскольку WTSQueryUserToken(), как можно видеть, не позволяет её задать (в описании функции мы не заметили явного указания на то, что выдаётся хендл с полными правами, и, следовательно, формально на это нельзя полагаться). С другой стороны, для дупликации необходимо иметь в маске доступа существующего хендла TOKEN_DUPLICATE, на что тоже рассчитывать нельзя. Если в примерах используется схема "попробовать дупликацию, если не получилось – воспользовать оригинальный хендл", то всё сходится, если же нет, то данная схема лишь следствие кочующего из примера в пример кода.
     
  3. djmans

    djmans New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    312
    Ну вот судя по "WTSQueryUserToken is intended for highly trusted services." и "must be running within the context of the LocalSystem account", с связи с такими запросами, предпологаю,что она юзает копию полученую от процесса логина юзера.

    Но вот это чудо меня ставит в полный тупик http://msdn.microsoft.com/en-us/library/ms802203.aspx

    "WTSQueryUserToken (WTSGetActiveConsoleSessionId(), &hImpersonationToken)" и коменты выше и ниже... Индуский косячекс?
     
  4. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Исправлено в следующем месяце :)