0
点赞
收藏
分享

微信扫一扫

GetCurrentUserSid

BOOL GetCurrentUserSid(std::string& strSID)

{

CCommonFunc func;

DWORD dwProcessID = func.GetProcessIDFromName("explorer.exe");

if( 0 == dwProcessID )

{

return FALSE;

}

#ifndef _RELEASE_WIN9X

HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessID);

if( hProc == NULL )

{

return FALSE;

}

HANDLE hToken;

if( !OpenProcessToken(hProc, TOKEN_QUERY, &hToken) )

{

CloseHandle(hProc);

return FALSE;

}

CloseHandle(hProc);

BOOL bRet = FALSE;

TOKEN_USER *pTokenUser;

DWORD Len;

char* pBuffer = NULL;

if( !GetTokenInformation(hToken, TokenUser, NULL, 0, &Len) )

{

if( GetLastError() == ERROR_INSUFFICIENT_BUFFER )

{

pBuffer = new char[Len];

if( !GetTokenInformation(hToken,TokenUser, pBuffer, Len, &Len) )

{

delete pBuffer;

CloseHandle(hToken);

return FALSE;

}

}

else

{

CloseHandle(hToken);

return FALSE;

}

}


pTokenUser = (TOKEN_USER*)pBuffer;

char *szStringSID;

if( FALSE == ConvertSidToStringSid(pTokenUser->User.Sid, &szStringSID) )

{

CloseHandle(hToken);

return FALSE;

}

else

{

strSID = szStringSID;

//std::string strTemp = szStringSID;

LocalFree(szStringSID);

//strSID = strTemp;

}

CloseHandle(hToken);


#endif _RELEASE_WIN9X

return TRUE;

}
举报
0 条评论