윈도우즈 XP, 윈도우즈 서버 2003과 그 이전 버전의 윈도우즈 운영체제에선, 모든 서비스는 콘롤에 처음 로그인한 사용자의 세션에서 실행됐다. 이 세션이 세션 0이다. 서비스와 사용자 응용 프로그램을 세션 0에서 한꺼번에 돌리는 것은 보안상의 위협을 안고 있다. 왜냐하면, 서비스는 높은 권한(예를 들어 Local System)으로 실행될 수 있으며, 자기의 권한을 높일 방법을 찾는 악의적인 프로그램의 표적이 되기 때문이다.

마이크로소프트 윈도우즈 비스타 운영체제는 서비스를 세션 0에 고립시키고, 세션 0을 비대화형(non-interactive)으로 만들어서 이 보안 위협을 줄였다. 윈도우즈 비스타에서는 시스템 프로세스와 서비스만이 세션 0에서 실행될 수 있다. 로그온한 첫번째 사용자는 세션 1에, 이후에 로그인한 사용자는 1 이후의 번호의 세션에 로그인 하게 된다. 이로서 서비스는 절대 사용자 응용프로그램과 같은 세션에서 돌 수 없게 되었으며, 따라서 응용 프로그램 코드에서부터의 공격에서 보호받게 되었다.

윈도우즈 비스타에서는 사용자 응용 프로그램(비주얼 스튜디오, 익스플로러)은 세션 0에서 돌지 않는다. 반면 모든 서비스는 세션 0에서 돈다. (모든 서비스를 보여주지 않는다면, 대화상자 아래부분의 "모든 사용자의 프로세스 보기"를 체크한다.)

세션 0 고립화는 사용자에게 UI를 보여줘야 하는 서비스에 문제를 야기했다. 서비스가 데스크탑과 다른 세션에서 돌기 때문에, UI가 사용자에게 보이지 않는 문제가 발생한다.
이러한 문제를 해결하기 위해서, 서비스에서 UI 를 띄워주기 위해서 CreateprocessAsUser 함수를 사용한다.

사용 예제 :  http://mynotepad.tistory.com/176

참고
http://secuprint.tistory.com/entry/%EB%B9%84%EC%8A%A4%ED%83%80%EB%B2%88%EC%97%AD-%EB%B9%84%EC%8A%A4%ED%83%80%EC%9D%98-%EC%84%B8%EC%85%98-0-%EA%B3%A0%EB%A6%BD%ED%99%94%EC%99%80-%EC%9D%91%EC%9A%A9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%ED%98%B8%ED%99%98%EC%84%B1

AND