Доброго времени суток, войны дзена! Как можно реализовать сабж? Рисую картину. Есть запущенные проги клиент () и сервер (служба запущена через LocalSystem) на разных машинах, есть соединение TCP через winsock. Мне необходимо создать серверный поток имперсонизацией клиента. LogonUser(), ImpersonateLoggedOnUser() не предлагать
BORYAK Что-то с трудом понимаю, что Вы хотите. Нужно, чтобы у серверного потока был токен клиента с удаленной машины, запущенного возможно от имени пользователя даже не существующего на локальной машине? Это ИМХО невозможно в принципе, может быть если только не сетевой логон. LogonUser, подозреваю, не предлагать, так как логин/пароль могут быть неизвестны. Ну ImpersonateLoggedOnUser тут вообще вряд ли поможет. Если сетевой логон, то можно попробовать создать сетевой именованый пайп, а потом ImpersonateNamedPipeClient, но насколько это работоспособно... P.S. Ну тут скорее воины, чем войны.
BORYAK Ну о создании пайпов очень подробно описано в МСДН. Смотрите хотя бы на функцию CreateNamedPipe. Или просто Interprocess Communications. Никогда не делал пайпы через сеть, но, вероятно, в CreateFile в имени файла просто нужно писать примерно так: \\.\pipe\192.168.1.1\pipename или так: \\192.168.1.1\pipe\pipename Точно не знаю. Кто знает, поправит. А потом в ImpersonateNamedPipeClient просто указать хэндл конца пайпа, и вызвавший поток по идее получит токен клиента.
По ходу хотел бы задать еще один вопрос. Делаю запрос на DC через ф-ю NetUserGetGroups(), она возвращает все группы кроме Domain Local. Как их получить? NetUserGetLocalGroups()? Да, точно. второй вопрос снят.