Cygwin: pty: Change how to determine if running as service or not.
This commit is contained in:
parent
44432b93ad
commit
e5db0d2fe0
@ -3094,22 +3094,11 @@ pty_master_fwd_thread (VOID *arg)
|
|||||||
the helper process is running as privileged user while
|
the helper process is running as privileged user while
|
||||||
slave process is not. This function is used to determine
|
slave process is not. This function is used to determine
|
||||||
if the process is running as a srvice or not. */
|
if the process is running as a srvice or not. */
|
||||||
static bool
|
inline static bool
|
||||||
is_running_as_service (void)
|
is_running_as_service (void)
|
||||||
{
|
{
|
||||||
DWORD dwSize = 0;
|
return check_token_membership (well_known_service_sid)
|
||||||
PTOKEN_GROUPS pGroupInfo;
|
|| cygheap->user.saved_sid () == well_known_system_sid;
|
||||||
tmp_pathbuf tp;
|
|
||||||
pGroupInfo = (PTOKEN_GROUPS) tp.w_get ();
|
|
||||||
NtQueryInformationToken (hProcToken, TokenGroups, pGroupInfo,
|
|
||||||
2 * NT_MAX_PATH, &dwSize);
|
|
||||||
for (DWORD i=0; i<pGroupInfo->GroupCount; i++)
|
|
||||||
if (RtlEqualSid (well_known_service_sid, pGroupInfo->Groups[i].Sid))
|
|
||||||
return true;
|
|
||||||
for (DWORD i=0; i<pGroupInfo->GroupCount; i++)
|
|
||||||
if (RtlEqualSid (well_known_interactive_sid, pGroupInfo->Groups[i].Sid))
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
Loading…
Reference in New Issue
Block a user