次の方法で共有


サロゲート ライセンス認証のための DLL サーバーの登録

DLL サーバーは、次の条件下でサロゲート プロセスに読み込まれます。

  • レジストリの CLSID キーの下に指定された AppID 値と、対応する AppID キーが必要である。
  • ライセンス認証呼び出しで、CLSCTX_LOCAL_SERVER ビットが設定され、CLSID キーで LocalServer32LocalServer、または LocalService が指定されない。 他の CLSCTX ビットが設定されている場合は、インプロセス、ローカル、またはリモート実行フラグの処理アルゴリズムに従います。
  • CLSID キーに InprocServer32 サブキーが含まれている。
  • InprocServer32 キーで指定された DLL が存在する。
  • DllSurrogate 値が AppID キーの下に存在する。

EXE の存在を示す LocalServerLocalServer32、または LocalService がある場合、EXE サーバーまたはサービスは常に、DLL サーバーをサロゲート プロセスに読み込むように優先して起動します。

サロゲート ライセンス認証を実行するには、DllSurrogate の名前付き値を指定する必要があります。 ライセンス認証とは、次のいずれかのライセンス認証関数の呼び出しを指します。

システム提供のサロゲートのインスタンスを起動するには、DllSurrogate の値を空の文字列または NULL に設定します。 カスタム サロゲートの起動を指定するには、値をサロゲートのパスに設定します。

同じ AppID に対して RemoteServerNameDllSurrogate の両方が指定されている場合、RemoteServerName 値は無視され、DllSurrogate 値によってローカル コンピューターでライセンス認証が行われます。 リモートでのサロゲート ライセンス認証の場合は、RemoteServerName を指定しますが、クライアントでは DllSurrogate を指定せず、サーバーで DllSurrogate を指定します。

独自のサロゲート プロセスで常に単独で実行するように設計された DLL サーバーは、CLSID と等しい AppID を使用して最適に構成されます。 AppID の下で、空の文字列値を持つ DllSurrogate の名前付き値を指定するだけです。

独自のサロゲート プロセスで単独で実行し、AppID レジストリ キーの下で指定された RunAs 値を使用してネットワーク経由で複数のクライアントにサービスを提供するように設計された DLL サーバーを構成することをお勧めします。 RunAs で "対話ユーザー" が指定されるか、特定のユーザー ID が指定されるかは、ユーザー インターフェイス、セキュリティ、およびその他のサーバー要件によって異なります。 RunAs 値を指定すると、クライアントの ID に関係なく、すべてのクライアントにサービスを提供するために、サーバーのインスタンスが 1 つだけ読み込まれます。 一方、各リモート クライアント ID にサービスを提供するために、DLL サーバーの 1 つのインスタンスをサロゲートで実行することを意図している場合は、RunAs を使用してサーバーを構成しないでください。

DLL サーバーの要件

サロゲート共有