Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Проблема с функцией LookupAccountSidA


Автор: koldun90 25.10.2018, 18:46
Здравствуйте пишу небольшую программу (сервис) который бы при входе писал имя пользователя который залогинился(вошел в систему)в файл.Вот кусок кода функции обработки запроса. Вся проблема в том что функция 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;
        }


Автор: xvr 26.10.2018, 14:48
1332 это ERROR_NONE_MAPPED. Вот что говорит MSDN:
Цитата

If the function cannot find an account name for the SID, GetLastError returns ERROR_NONE_MAPPED. This can occur if a network time-out prevents the function from finding the name. It also occurs for SIDs that have no corresponding account name, such as a logon SID that identifies a logon session.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)