16,471
社区成员
发帖
与我相关
我的任务
分享
BOOL WINAPI LookupAccountSid(
__in_opt LPCTSTR lpSystemName,
__in PSID lpSid,
__out_opt LPTSTR lpName,
__inout LPDWORD cchName,
__out_opt LPTSTR lpReferencedDomainName,
__inout LPDWORD cchReferencedDomainName,
__out PSID_NAME_USE peUse
);
int AdGetDomName(TCHAR* szDomName)
{
HANDLE hToken;
BOOL bSuccess;
BOOL bRet = FALSE;
UCHAR InfoBuffer[MAX_PATH] = {0};
DWORD cbInfoBuffer = MAX_PATH;
TCHAR DomainName[MAX_PATH/2] ={0};
TCHAR UserName[MAX_PATH] = {0};
SID_NAME_USE snu;
DWORD cchUser = MAX_PATH;
DWORD cchDomain = MAX_PATH/2;
if(!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, TRUE, &hToken))
{
if(GetLastError() == ERROR_NO_TOKEN)
{
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken ))
{
return -1;
}
}
else
{
return -1;
}
bSuccess = GetTokenInformation(hToken, TokenUser, InfoBuffer, cbInfoBuffer, &cbInfoBuffer);
if(!bSuccess)
{
return -1;
}
else
{
bRet = LookupAccountSid(NULL, ((PTOKEN_USER)InfoBuffer)->User.Sid, UserName, &cchUser,DomainName,&cchDomain, &snu );
if (!bRet)
{
CloseHandle(hToken);
return -1;
}
else
{
wcscpy(szDomName,DomainName);
}
}
}
return 0;
}