mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 20:13:04 +00:00
[SHELL32][SDK] Implement SHOpenEffectiveToken and SHGetUserSessionId (#5713)
- Implement SHOpenEffectiveToken and SHGetUserSessionId functions. - Add them to <undocshell.h>.
This commit is contained in:
parent
4bdfee8e8b
commit
4407e0aefa
3 changed files with 56 additions and 22 deletions
|
@ -9,6 +9,59 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
||||
static BOOL OpenEffectiveToken(DWORD DesiredAccess, HANDLE *phToken)
|
||||
{
|
||||
BOOL ret;
|
||||
|
||||
if (phToken == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*phToken = NULL;
|
||||
|
||||
ret = OpenThreadToken(GetCurrentThread(), DesiredAccess, FALSE, phToken);
|
||||
if (!ret && GetLastError() == ERROR_NO_TOKEN)
|
||||
ret = OpenProcessToken(GetCurrentProcess(), DesiredAccess, phToken);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHOpenEffectiveToken (SHELL32.235)
|
||||
*/
|
||||
EXTERN_C BOOL WINAPI SHOpenEffectiveToken(_Out_ LPHANDLE phToken)
|
||||
{
|
||||
TRACE("%p\n", phToken);
|
||||
return OpenEffectiveToken(TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, phToken);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHGetUserSessionId (SHELL32.248)
|
||||
*/
|
||||
EXTERN_C DWORD WINAPI SHGetUserSessionId(_In_opt_ HANDLE hToken)
|
||||
{
|
||||
DWORD dwSessionId, dwLength;
|
||||
BOOL bOpenToken = FALSE;
|
||||
|
||||
TRACE("%p\n", hToken);
|
||||
|
||||
if (!hToken)
|
||||
bOpenToken = SHOpenEffectiveToken(&hToken);
|
||||
|
||||
if (!hToken ||
|
||||
!GetTokenInformation(hToken, TokenSessionId, &dwSessionId, sizeof(dwSessionId), &dwLength))
|
||||
{
|
||||
dwSessionId = 0;
|
||||
}
|
||||
|
||||
if (bOpenToken)
|
||||
CloseHandle(hToken);
|
||||
|
||||
return dwSessionId;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHGetShellStyleHInstance (SHELL32.749)
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue