Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2018, 18:44   #1
Koldun90
Пользователь
 
Регистрация: 16.05.2014
Сообщений: 12
По умолчанию Проблема с функцией LookupAccountSidA

Здравствуйте пишу небольшую программу (сервис) который бы при входе писал имя пользователя который залогинился(вошел в систему)в файл.Вот кусок кода функции обработки запроса. Вся проблема в том что функция LookupAccountSidA возвращает код ошибки 1332 и я не знаю что с этим делать
Код:
case SERVICE_CONTROL_SESSIONCHANGE:
        {
            if (eventType == WTS_SESSION_LOGON)  // пользователь вошел
            {
                HANDLE phToken;
                WTSSESSION_NOTIFICATION *uk = (WTSSESSION_NOTIFICATION *)eventData;
                int sessid=uk->dwSessionId;
                
            
 
                BOOL rez=WTSQueryUserToken(sessid,&phToken);
                if (rez == true)
                {
                    DWORD dwSize=0; 
                    TOKEN_USER ptu;
                            
                    rez=GetTokenInformation(phToken, TokenUser, &ptu, sizeof(ptu), &dwSize);
                    if (rez == false)
                    {
                        if (GetLastError() != 122)
                        {
                            return 0;
                        }
                        rez = GetTokenInformation(phToken, TokenUser, &ptu, dwSize, &dwSize);
                        if (rez == true)
                        {
                        
                            SID_NAME_USE use;
                            DWORD size1 = 100;
                            DWORD size2 = 100;
                            char fulnm[100] = { 0 };
                            char fulldm[100] = { 0 };
                            rez = LookupAccountSidA(NULL, ptu.User.Sid, (LPSTR)&fulnm, (LPDWORD)&size1, (LPSTR)&fulldm, (LPDWORD)&size2, &use);
                            if (rez == true)
                            {
 
                                /*FILE *E = fopen("c:\\EEEEEE.txt", "a");
                                char mnm[20];
                                sprintf(mnm, "%s\n", fulnm);
                                fwrite(mnm, strlen(mm), 1, E);
                                fclose(E);*/
                            }
                            else
                            {
                                int rd = GetLastError();  //1332
                                int u = 8;
                            }
                        }
                        else
                        {
                            int r = GetLastError();
                            FILE *F = fopen("c:\\ERROROROR.txt", "a");
                            char mm[20];
                            sprintf(mm, "%d\n", r);
                            fwrite(mm, strlen(mm), 1, F);
                            fclose(F);
                        }
                    }
                }
                else
                {
                    int err = GetLastError();
                    FILE *F = fopen("c:\\bbbbbbb.txt", "a");
                    char mm[20];
                    sprintf(mm, "%d\n", err);
                    fwrite(mm, strlen(mm), 1, F);
                    fclose(F);
                }
            }
            if (eventType == WTS_SESSION_LOGOFF)
            {
                FILE *F = fopen("c:\\ct.txt", "a");
                char mm[20];
                sprintf(mm, "%s", "vyshel\n");
                fwrite(mm, strlen(mm), 1, F);
                fclose(F);
            }
            return 0;
        }
Koldun90 вне форума Ответить с цитированием
Старый 26.10.2018, 04:38   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Koldun90 Посмотреть сообщение
(LPSTR)&fulnm
Довольно странная конструкция, вам не кажется?

Привидение типов часто признак проблем в коде.

Вот здесь описан возможная причина:
https://docs.microsoft.com/en-us/win...kupaccountsida

Последний раз редактировалось waleri; 26.10.2018 в 04:43.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с функцией nwhta Помощь студентам 1 24.02.2016 20:30
ПРоблема с функцией! dpmkh Общие вопросы Delphi 6 12.10.2012 18:42
проблема с функцией Madmaxisss Паскаль, Turbo Pascal, PascalABC.NET 5 23.08.2012 13:46
проблема с функцией saix Общие вопросы C/C++ 14 28.10.2010 19:07