Почему этот сбой? - PullRequest
       4

Почему этот сбой?

2 голосов
/ 07 апреля 2010

Я бился головой ... Я не могу притворяться парнем из C ++ ...

    TCHAR * pszUserName = userName.GetBuffer();
SID sid;
SecureZeroMemory(&sid, sizeof(sid));
SID_NAME_USE sidNameUse;
DWORD cbSid = sizeof(sid);

pLog->Log(_T("Getting the SID for user [%s]"), 1, userName);

if (!LookupAccountName(NULL, (LPSTR)pszUserName, &sid, &cbSid, NULL, 0, &sidNameUse))
{
    pLog->Log(_T("Failed to look up user SID. Error code: %d"),1,  GetLastError());
    return _T("");
}

pLog->Log(_T("Converting binary SID to string SID"));

Сообщение «Получение SID для пользователя [x]» написано, но затем приложение вылетает. Я предполагаю, что это был LookupAccountName звонок.

EDIT:

Упс userName - это строка MFC

1 Ответ

7 голосов
/ 07 апреля 2010

Параметр 6 (cchReferencedDomainName) должен указывать на DWORD. Когда в документации говорится, что «если для параметра ReferencedDomainName задано значение NULL, этот параметр должен быть равен нулю», я полагаю, это означает, что ссылочный DWORD должен быть равен 0.

Попробуйте добавить:

DWORD cchReferencedDomainName = 0;
if (!LookupAccountName(NULL, (LPSTR)pszUserName, &sid, &cbSid, NULL, &cchReferencedDomainName, &sidNameUse))
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...