다음을 통해 공유


창 스테이션 및 데스크톱 만들기

시스템은 대화형 창 스테이션을 자동으로 만듭니다. 대화형 사용자가 로그온하면 시스템은 대화형 창 스테이션을 사용자 로그온 세션과 연결합니다. 또한 시스템은 대화형 창 스테이션(Winsta0\default)에 대한 기본 입력 데스크톱을 만듭니다. 로그온한 사용자가 시작한 프로세스는 Winsta0\default 데스크톱과 연결됩니다.

프로세스는 CreateWindowStation 함수를 사용하여 새 창 스테이션을 만들고 CreateDesktop 또는 CreateDesktopEx 함수를 사용하여 새 데스크톱을 만들 수 있습니다. 만들 수 있는 데스크톱 수는 시스템 데스크톱 힙의 크기에 따라 제한됩니다. 자세한 내용은 CreateDesktop을 참조하세요.

서비스 애플리케이션과 같은 비활성 프로세스가 창 스테이션에 연결을 시도하고 프로세스 로그온 세션에 대한 창 스테이션이 없는 경우 시스템은 세션에 대한 창 스테이션 및 데스크톱을 만들려고 시도합니다. 만든 창 스테이션의 이름은 로그온 세션 식별자를 기반으로 하며 바탕 화면 이름은 다음과 같이 기본값으로 지정됩니다.

  • 서비스가 LocalSystem 계정의 보안 컨텍스트에서 실행 중이지만 SERVICE_INTERACTIVE_PROCESS 특성을 포함하지 않는 경우 Service-0x0-3e7$\default 창 스테이션과 데스크톱을 사용합니다. 이 창 스테이션은 대화형이 아니므로 서비스에서 사용자 인터페이스를 표시할 수 없습니다. 또한 서비스에서 만든 프로세스는 사용자 인터페이스를 표시할 수 없습니다.
  • 서비스가 사용자 계정의 보안 컨텍스트에서 실행되는 경우 창 스테이션의 이름은 사용자 SID 서비스-0xZ1 Z2$를 기반으로 합니다. 여기서 Z1-은 로그온 SID의 상위 부분이며 Z2는 로그온 SID의 하위 부분입니다. SID는 로그온 세션에 고유하기 때문에 동일한 보안 컨텍스트에서 실행되는 두 서비스는 고유한 창 스테이션을 받습니다. 이러한 창 스테이션은 대화형이 아닙니다.

창 스테이션 및 데스크톱에 대한 DACL(임의 액세스 제어 목록)에는 서비스의 사용자 계정에 대한 다음 액세스 권한이 포함됩니다.

창 스테이션:

WINSTA\_ACCESSCLIPBOARD WINSTA\_ACCESSGLOBALATOMS WINSTA\_CREATEDESKTOP WINSTA\_EXITWINDOWS WINSTA\_READATTRIBUTES STANDARD\_RIGHTS\_REQUIRED

데스크톱:

DESKTOP\_CREATEMENU DESKTOP\_CREATEWINDOW DESKTOP\_ENUMERATE DESKTOP\_HOOKCONTROL DESKTOP\_READOBJECTS DESKTOP\_WRITEOBJECTS STANDARD\_RIGHTS\_REQUIRED