Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 05.12.2015
Сообщений: 33

Имперсонация и RPC

08.12.2016, 23:14. Показов 2191. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Помогите, пожалуйста, разобраться в коде. Мне очень повезло заполучить его от знакомых знакомых знакомых, но, будем честны, понимаю я его очень условно (т.е. общая идея и что делают функции - понятно), а мне надо осознать его чуть ли не построчно. Также не очень понимаю общую структуру хранения хэндлов клиентов.
Буду очень благодарна за терпеливую помощь
Ну а от меня- рабочий код)
p.s. также, если вдруг кто-то очень захочет внести в него правки, буду внимательна и благодарна.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "Impersonate.h"
 
std::list<RPC_CLIENT> clients;
 
RPC_STATUS get_client_handle(RPC_BINDING_HANDLE *hBinding)
{
    RPC_STATUS status;
    RPC_ASYNC_STATE rpcAsync;
    status = RpcAsyncInitializeHandle(&rpcAsync, sizeof(rpcAsync));
    if (status)
    {
        printf("error in RpcAsyncInitializeHandle errcode=%d\n", status);
        return status;
    }
    *hBinding = RpcAsyncGetCallHandle(&rpcAsync);
    return RPC_S_OK;
}
 
RPC_CLIENT* get_client()
{
    RPC_BINDING_HANDLE Binding;
    RPC_STATUS status = get_client_handle(&Binding);
    if (status)
    {
        printf("error in RpcServerInqBindingHandle errcode=%d\n", status);
        return NULL;
    }
    std::list<RPC_CLIENT>::iterator it;
    for (it = clients.begin(); it != clients.end(); it++)
        if ((*it).BindingHandle == Binding)
            return &(*it);
    return NULL;
}
 
RPC_CLIENT* add_client()
{
    RPC_BINDING_HANDLE Binding;
    RPC_STATUS status = get_client_handle(&Binding);
    if (status)
    {
        printf("error in RpcServerInqBindingHandle errcode=%d\n", status);
        return NULL;
    }
    RPC_CLIENT client;
    std::list<RPC_CLIENT>::iterator it = clients.end();
    clients.push_back(client);
    it--;
    (*it).BindingHandle = Binding;
    (*it).Token = NULL;
    return &(*it);
}
 
int hypocrite_mode()
{
    RPC_CLIENT* client;
    client = get_client();
    if (!ImpersonateLoggedOnUser(client->Token))
    {
        printf("ImpersonateLoggedOnUser  - %d\n", GetLastError());
        return 0;
    }
    return 1;
}
 
int remove_the_mask()
{
    if (!RevertToSelf())
    {
        printf("RevertToSelf  - %d/n", GetLastError());
        return 0;
    }
    return 1;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2016, 23:14
Ответы с готовыми решениями:

RPC in Windows
Подскажите, что и ка нужно установить, чтобы работать с rpc под windows желательно с студией 2012.

RPC в RPC и очередь выполнения
Крч... вот код: void OnConnectedToServer() { NetView.RPC(&quot;SendData&quot;, RPCMode.All, Convert.ToInt32(Network.player.ToString()),...

настройки RPC
Я начинающий сетевой администратор и программист. Никак не могу разобраться с RPC в Windows XP. Простейшие программы на Delphi с...

1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
09.12.2016, 10:17
Советую для начала почитать про Microsoft RPC:

Microsoft RPC
https://msdn.microsoft.com/en-... s.85).aspx

Microsoft RPC Programming Guide (Print ISBN:978-1-56592-070-5 | ISBN 10:1-56592-070-8)
http://shop.oreilly.com/product/9781565920705.do
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2016, 10:17
Помогаю со студенческими работами здесь

Асинхронный RPC
Нужно реализовать простейший RPC. Использование стандартный не позволяет религия :) На стороне сервера идет обработка входящих команд, а...

Восстановить службу RPC
Доброго времени суток! Из-за криворукости изменила способ входа в систему в свойствах службы rpc на вход с системной учетной записью....

SOAP vs. XML-RPC
Привет всем) У меня (может и странный) вопрос. Можно ли работать с SOAP без создания *.wsdl файла? К примеру принимать данные со...

PHP и json-rpc
Уважаемые программисты, подскажите, как мне сделать запрос на сервер с передачей json строки?

Сервер RPC недоступен
Проблема стала возникать не так давно, стихийное проявление. при попытки подключения к терминальному серверу 1с выскакивает сообщение что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru