[This article shows how you close the window: You start the child process suspended. -Raymond]
Sorry, I forgot to mention that. My implementation does use CREATE_SUSPENDED. The problem, though, is that if you somehow crash or get terminated between CreateProcess and AssignProcessToJobObject, you leave the suspended child process as a zombie.