I had to delve into this because the code that worked fine on Windows 2003/XP doesn't on Windows 7. Application launched by the use of CreateProcessAsUser fails with 0xc0000142 error code. The difference between my old code and one available from MSDN at Starting an Interactive Client Process in C++ is that I didn't set up privileges and to Window Station and desktop. I've updated my code according to the example, but I would very much like to understand which change in newer Windows made running processes in interactive Window station a requirement?
Asked
Active
Viewed 2,531 times
3
-
The issue remains. I am also looking for a solution. Session 0 isolation is the name of the game. Any process running in session 0 is not able to create GUI instances. The interactive client runs - but no GUI is shown! – Henry Aloni Sep 10 '13 at 13:54
-
As I said in the post, I just changed my code according to MSDN example. Henry, note that my process was a command-line one, no terminal. So I'm still wondering why do I need an interactive session to run it. – Oleg Zhylin Sep 11 '13 at 07:17
1 Answers
0
At least part of the requirements derive from the change to run interactive processes in a different session from services. This was done so that applications could not run 'shatter' style attacks against privileged services. More information is available here.

Eric Brown
- 13,774
- 7
- 30
- 71
-
Yes, I've stumbled upon this when researching the issue. It is not completely relevant to the question though. In a scenario when _ordinary_ executable starts another process using CreateProcessAsUser something different happens on Windows 7 and Windows 2003/XP because on XP process starts successfully and fails with 0xc0000142 on newer OS. Apparently the process doesn't go to interactive session because if I make it to do that according to MSDN example it starts fine. I'm interested in knowing what actually happens and what has changed since XP. – Oleg Zhylin Oct 29 '09 at 14:56