次の方法で共有


com4:SurrogateServer

SurrogateServer を 1 つまたは複数のクラス登録に登録します。

要素の階層

<パッケージ>

    <アプリケーション>

         <Application>

              <拡張機能>

                   <com4:SurrogateServer>

構文

<com4:SurrogateServer
  CustomSurrogateExecutable = 'A string with a value between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *.'
  DisplayName = 'A string with a value between 1 and 256 characters in length. This string is localizable.'
  LaunchAndActivationPermission = 'An [SDDL string](/windows/win32/secauthz/security-descriptor-string-format) value.'
  AppId = 'A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.'
  SystemSurrogate = 'A string with the following optional value: "PreviewHost".' >

  <!-- Child elements -->
  Class
  InProcessServerClassReference
  ClassReference

</com4:SurrogateServer>

属性と要素

属性

属性 説明 データ型 必須 既定値
CustomSurrogateExecutable AppId キーの DllSurrogate へのパス。 このパスはパッケージ ルートに対する相対パスであり、パッケージ内のファイルを参照する必要があります。 これは、SystemSurrogate では変更できません。 で終わる必要があり、 で終わる .exe 必要がある 1 から 256 文字の値を持つ文字列( <>:"、、 |?、または *) を含めることはできません。 Yes
DisplayName DisplayName は、既定の AppID キー値に対応するローカライズ可能な文字列です。 長さが 1 ~ 256 文字の値を持つ文字列。 Yes
LaunchAndActivationPermission AppID キーの LaunchPermission 値に対応する SDDL 文字列 SDDL 文字列値。 Yes
AppId 関連付けられた AppId キーを参照する AppId。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式の GUID。 Yes
SystemSurrogate AppId キーの DllSurrogate 値の既知の値に対応する 値。 これは、CustomSurrogateExecutable では変更できません。 "PreviewHost" という省略可能な値を持つ文字列。 Yes

子要素

子要素 説明
クラス サロゲート サーバー クラスの登録を定義します。
InProcessServerClassReference マネージド インプロセス サーバーが関連付けられているクラスを指定し、登録の詳細を設定します。
ClassReference 登録されたインプロセス サーバーが関連付けられているクラスを指定し、登録の詳細を設定します。

親要素

親要素 説明
拡張機能 アプリの 1 つ以上の拡張ポイントを定義します。

注釈

COM レジストリ レイアウトの CLSID キー](/windows/win32/com/clsid-key-hklm) を使用すると、次を指定して、代理サーバー (CLSCTX_LOCAL_SERVER) でインプロックアクティブ化 (CLSCTX_INPROC_SERVER) と outofproc アクティブ化のために CLSID を登録できます。

  • InprocServer32 サブキー内の Inproc アクティブ化の詳細。
  • CLSID キーの AppID 値を介した AppID キーへの参照。ここで、AppID キーは DllSurrogate 値を介してサロゲートを指定します。 サロゲート サーバーでの outofproc アクティブ化では、inproc サーバーの登録の詳細 (dll パスや ThreadingModel など) も outofproc アクティブ化で使用されることに注意してください。 InProcessServer 要素の ClassReference 子を使用すると、inproc と outofproc の両方のアクティブ化に CLSID を登録するパッケージで、InProcessServer/Class 要素または InProcessServer/ClassReference 要素として inproc サーバーの詳細を 1 回指定し、CLSID の outofproc アクティブ化をサポートする SurrogateServer からこの要素を参照できます。 inproc/outofproc 登録のこの構造体は、InProcessServer/ClassReference 要素と SurrogateServer/ClassReference 要素の両方で dll パスと ThreadingModel を個別に指定するよりも、COM レジストリ レイアウトをより厳密に反映しています。

サロゲート サーバーで outofproc アクティブ化用に登録された CLSID を使用してアプリケーションをパッケージ化する場合は、通常、代理サーバーのみがマニフェストに登録することをお勧めします。 たとえば、サロゲート登録は、従来は inproc サーバーの実装を有効にしていた COM ベースの拡張ポイントをサポートするためによく使用されますが、分離のベスト プラクティスとして outofproc サーバー登録が推奨されるようになりました。 パッケージ化されたアプリケーションの場合、inproc サーバーには追加の機能制限があります (詳細については 「In-ProcessServers 」を参照してください)。一方、 runFullTrust 制限付き機能 を持つパッケージはサロゲート サーバーを正常に登録できます。また、サロゲート サーバーを登録するほとんどの拡張機能ポイントでは、拡張機能の機能を有効にするのに十分です。 ただし、パッケージ 化されたアプリケーションが、inproc アクティブ化 (CLSCTX_INPROC_SERVER) を要求する他のアプリケーションとの互換性のために CLID のインプロック アクティブ化をサポートする必要があり、inproc サーバーを登録するための要件を満たしている場合は、インプロクティングと outofproc アクティブ化の CLSID をサロゲートに登録できます。 この場合は、InProcessServer/Class 要素または InProcessServer/ClassReference 要素に inproc サーバーの詳細を指定し、SurrogateServer/InProcessServerClassReference 要素から参照することをお勧めします。

必要条件

Item
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (ビルド 20348)