다음을 통해 공유


AppIDFlags

COM 서버의 활성화 동작을 제어하는 플래그 집합입니다.

레지스트리 항목

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
   {AppID_GUID}
      AppIDFlags = flags

설명

REG_DWORD 값입니다 .

플래그 값 상수
0x1 APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP
0x2 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND
0x4 APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY

 

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP 설명

AppIDFlags에서 APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP 플래그가 지워지거나 AppIDFlags가 없는 경우 대화형 사용자 COM 서버에 대한 활성화 요청을 만드는 터미널 서버 세션의 클라이언트는 활성화 요청에서 세션의 "winsta0" 창 스테이션의 "기본" 데스크톱에 있는 COM 서버에 바인딩하거나 시작 및 바인딩합니다. 예를 들어 클라이언트가 세션 3의 "winsta0\desktop1"을 실행하는 경우 COM 서버의 instance 세션 3의 "winsta0\desktop1"에서 이미 실행 중인 경우에도 세션 3의 활성화 요청이 세션 3의 "winsta0\default"에 COM 서버에 바인딩되거나 시작되고 바인딩됩니다.

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP 플래그가 AppIDFlags 값에 설정된 경우 COM은 클라이언트의 데스크톱에서 실행되는 서버 프로세스와 활성화 요청의 세션에 바인딩하거나 시작 및 바인딩합니다. 예를 들어 클라이언트가 세션 3에서 "winsta0\desktop1"을 실행하는 경우 세션 3에서 COM 서버의 instance 이미 세션 3의 "winsta0\default"에서 실행 중인 경우에도 세션 3에 대한 활성화 요청이 세션 3의 "winsta0\desktop1"에 바인딩되거나 실행되고 바인딩됩니다.

클라이언트는 세션 모니커 를 사용하여 활성화 요청을 수행할 때 클라이언트 세션과 다른 세션을 지정할 수 있습니다.

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP 플래그는 실행 "대화형 사용자"로 구성된 COM 서버에만 적용됩니다.

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 설명

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그가 AppIDFlags에 설정된 경우 RunAs "Activator"로 구성된 COM 서버는 프로세스 토큰의 LogonID SID에 PROCESS_ALL_ACCESS 수 있는 프로세스 보안 설명자로 시작됩니다. 또한 보안 설명자의 소유자는 프로세스 토큰의 LogonID SID로 설정됩니다.

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그가 AppIDFlags에 설정된 경우 RunAs "This User"로 구성된 COM 서버는 프로세스 토큰의 LogonID SID에서 PROCESS_ALL_ACCESS 수 있는 프로세스 보안 설명자로 시작됩니다. 또한 보안 설명자의 소유자는 프로세스 토큰의 LogonID SID로 설정됩니다. 또한 COM SCM(서비스 제어 관리자)은 다음과 같이 COM 서버 프로세스의 토큰을 수정합니다.

  • 토큰에 APPID SID를 추가합니다. 토큰 기본 DACL(임의 액세스 제어 목록)에서 APPID SID에 모든 권한을 부여합니다. Windows Vista 이상 버전의 Windows에서는 토큰 기본 DACL에서 OwnerRights SID READ_CONTROL 권한을 부여합니다. Windows Vista 이전 버전의 Windows에서는 토큰 소유자를 APPID SID로 설정합니다.

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그를 사용할 때 다음 보안 고려 사항을 고려해야 합니다.

  • APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그는 기본 제공 서비스 보안 컨텍스트 중 하나에서 시작되는 COM 서버에 의해 설정됩니다. NetworkService 또는 LocalService 계정 중 하나. 서버가 권한 있는 클라이언트를 가장하고 APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그가 설정되지 않은 경우 동일한 보안 컨텍스트를 사용하여 다른 프로세스에서 실행되는 악성 코드는 COM 서버 프로세스에서 권한 있는 클라이언트의 가장 토큰을 하이재킹하여 권한을 상승시킬 수 있습니다.
  • APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그가 설정되면 COM은 RunAs "Activator" COM 서버의 경우 프로세스 개체의 보안 설명자를 강화합니다. 이러한 서버의 경우 COM 클라이언트는 COM 활성화에 사용하는 토큰을 강화해야 합니다.
  • APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그가 설정되면 COM은 실행 "이 사용자" COM 서버의 경우 프로세스 개체의 보안 설명자를 강화합니다. 또한 COM SCM은 토큰을 만드는 엔터티이므로 COM 서버의 프로세스 토큰을 강화합니다.

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그는 MSRC8322 패치(보안 공지 MS09-012)가 적용된 경우에만 Windows XP, Windows Server 2003, Windows Vista 및 Windows Server 2008에서 지원됩니다. 기본적으로 Windows 7 이상 버전의 Windows에서 지원됩니다.

APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 플래그는 RunAs "Activator" 또는 "This User"로 구성된 COM 서버에만 적용됩니다. NT 서비스인 COM 서버에는 적용되지 않습니다.

APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 설명

APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 플래그가 AppIDFlags에 설정된 경우 COM SCM은 가장 수준의 RPC_C_IMP_LEVEL_IDENTIFY 사용하여 COM 서버 프로세스에 개체 활성화 요청을 실행합니다.

APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 플래그가 설정되지 않은 경우 COM SCM은 가장 수준의 RPC_C_IMP_LEVEL_IMPERSONATE 사용하여 COM 서버 프로세스에 개체 활성화 요청을 실행합니다.

APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 플래그를 사용하는 경우 다음 보안 고려 사항을 고려해야 합니다.

  • APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 플래그는 개체 활성화 요청에서 클라이언트를 대신하여 작업을 수행하지 않는 COM 서버에서 사용됩니다. 이러한 서버의 경우 COM SCM이 RPC_C_IMP_LEVEL_IDENTIFY 개체 활성화 요청을 실행하면 프로세스에 SE_IMPERSONATE_NAME 수준이 표시되어 권한 있는 토큰의 가능성이 최소화됩니다.

APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 플래그는 Windows 7 이상 버전의 Windows에서 지원됩니다.

데스크톱

가장 수준

대화형 사용자

세션 모니커

창 스테이션