Имперсонизация пользователя на удаленной тачке

Тема в разделе "WASM.BEGINNERS", создана пользователем BORYAK, 9 янв 2008.

  1. BORYAK

    BORYAK Боран

    Публикаций:
    0
    Регистрация:
    22 апр 2005
    Сообщения:
    33
    Адрес:
    Kazakhstan
    Доброго времени суток, войны дзена!
    Как можно реализовать сабж?
    Рисую картину. Есть запущенные проги клиент () и сервер (служба запущена через LocalSystem) на разных машинах, есть соединение TCP через winsock. Мне необходимо создать серверный поток имперсонизацией клиента.
    LogonUser(), ImpersonateLoggedOnUser() не предлагать
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    BORYAK
    Что-то с трудом понимаю, что Вы хотите. Нужно, чтобы у серверного потока был токен клиента с удаленной машины, запущенного возможно от имени пользователя даже не существующего на локальной машине? Это ИМХО невозможно в принципе, может быть если только не сетевой логон.
    LogonUser, подозреваю, не предлагать, так как логин/пароль могут быть неизвестны. Ну ImpersonateLoggedOnUser тут вообще вряд ли поможет. Если сетевой логон, то можно попробовать создать сетевой именованый пайп, а потом ImpersonateNamedPipeClient, но насколько это работоспособно...
    P.S. Ну тут скорее воины, чем войны.
     
  3. BORYAK

    BORYAK Боран

    Публикаций:
    0
    Регистрация:
    22 апр 2005
    Сообщения:
    33
    Адрес:
    Kazakhstan
    Можно тут по подробней
    Сорри, русский не родной
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    BORYAK
    Ну о создании пайпов очень подробно описано в МСДН. Смотрите хотя бы на функцию CreateNamedPipe. Или просто Interprocess Communications.
    Никогда не делал пайпы через сеть, но, вероятно, в CreateFile в имени файла просто нужно писать примерно так:
    \\.\pipe\192.168.1.1\pipename
    или так:
    \\192.168.1.1\pipe\pipename
    Точно не знаю. Кто знает, поправит.
    А потом в ImpersonateNamedPipeClient просто указать хэндл конца пайпа, и вызвавший поток по идее получит токен клиента.
     
  5. BORYAK

    BORYAK Боран

    Публикаций:
    0
    Регистрация:
    22 апр 2005
    Сообщения:
    33
    Адрес:
    Kazakhstan
    По ходу хотел бы задать еще один вопрос.
    Делаю запрос на DC через ф-ю NetUserGetGroups(), она возвращает все группы кроме Domain Local. Как их получить?

    NetUserGetLocalGroups()?
    Да, точно. второй вопрос снят.