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説明

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOPフラグがAppIDFlagsでクリアされている場合、またはAppIDFlagsが存在しない場合、対話型ユーザーCOMサーバーのアクティブ化要求を行うターミナルサーバーセッションのクライアントは、アクティブ化要求でセッションの"winsta0"ウィンドウステーションの"default"デスクトップのCOMサーバーにバインドするか、または起動してバインドします。 たとえば、クライアントがセッション3の"winsta0\desktop1"を実行している場合、セッション3のアクティブ化要求は、COMサーバーのインスタンスがセッション3の"winsta0\desktop1"で既に実行されている場合でも、セッション3の"winsta0\default"のCOMサーバーにバインドするか、起動してバインドします。

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOPフラグがAppIDFlags値で設定されている場合、COMはクライアントのデスクトップで実行されているサーバープロセスと、アクティブ化要求のセッションにバインドするか、起動してバインドします。 たとえば、クライアントがセッション3で"winsta0\desktop1"を実行している場合、セッション3のアクティブ化要求は、COMサーバーのインスタンスがセッション3の"winsta0\default"で既に実行されている場合でも、セッション3の"winsta0\desktop1"のCOMサーバーにバインドするか、起動してバインドします。

クライアントは、 セッションモニカーを使用して、アクティブ化要求を行うときに、クライアントのセッションとは異なるセッションを指定できます。

APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOPフラグは、RunAs"対話ユーザー"に構成されている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はRunAs"This User"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でサポートされています。

デスクトップ

偽装レベル

対話型ユーザー

セッションモニカー

ウィンドウステーション