Assigning JobObject to process with non-zero session id launched from a SYSTEM service

161 views Asked by At

I have a Windows SYSTEM service which needs to launch a new process in the context of the logged-in user. Along with this, I need to create a Job for the new process with certain limits.

I am extracting the process token of explorer.exe and duplicating it to create a primary token. I use this token in CreateProcessAsUser to create the new process running in the context of the user with a session id which is non-zero. When I assign the Job to this process, AssignProcessToJobObject function fails with Access denied error. Specifically, I am not able to set JOBOBJECT_BASIC_UI_RESTRICTIONS limits (JOBOBJECT_EXTENDED_LIMIT_INFORMATION works though).

The process is created as suspended and after assigning the job, I am resuming the thread.

When I use the token of the current process (i.e. SYSTEM service with session id 0) instead of explorer.exe, everything works fine.

I am testing this on Windows 10

0

There are 0 answers