次の方法で共有


RunAs

サービス アプリケーションとして書き込まずにリモート クライアントによってアクティブ化されたときに、特定のユーザー アカウントで実行されるようにクラスを構成します。

レジストリ エントリ

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
   {AppID_GUID}
      RunAs = value

備考

値はユーザー名を指定し、UserName Domain**\**UserName、または文字列 "Interactive User"のいずれかの形式である必要があります。 文字列 "nt authority\localservice" (Local Service の場合) と "nt authority\networkservice" (ネットワーク サービスの場合) を指定することもできます。 {AppID_GUID} が既に開始されているか、クラス テーブルにエントリがある COM サーバーを参照している場合は、文字列 "nt authority\system" を指定することもできます。 ただし、まだ起動していない COM サーバーで "nt authority\system" を使用することはできません。 "nt authority\localservice"、"nt authority\networkservice"、および "nt authority\system" の既定のパスワードは "" (空の文字列) です。

手記

Windows Vista の時点では、RunAs 設定で "nt authority\localservice"、"nt authority\networkservice"、および "nt authority\system" 構成するために空のパスワードは不要になりました。

 

特定のユーザーとして実行するように構成されたクラスは、他の ID では登録されない可能性があるため、この CLSID を使用して CoRegisterClassObject呼び出しは、実際のアクティブ化要求の代わりに COM によってプロセスが起動されない限り失敗します。

ユーザー名は、クラスの AppID キーの下にある RunAs 値から取得されます。 ユーザー名が "対話型ユーザー" の場合、サーバーは現在ログオンしているユーザーの ID で実行され、対話型デスクトップに接続されます。

それ以外の場合、パスワードは、コンピューターの管理者とシステムのみが使用できるレジストリの一部から取得されます。 その後、ユーザー名とパスワードを使用して、サーバーを実行するログオン セッションを作成します。 この方法で起動すると、ユーザーは独自のデスクトップおよびウィンドウ ステーションで実行され、対話型ユーザーや他のユーザー アカウントで実行されている他のユーザーとウィンドウ ハンドル、クリップボード、またはその他の UI 要素を共有しません。

RunAs クラスのパスワードを確立するには、システム ディレクトリにインストールされている DCOMCNFG 管理ツールを使用する必要があります。

DCOM サーバーで使用される RunAs ID の場合、値に指定されたユーザー アカウントにはバッチ ジョブとしてログオンする権限が必要です。 この権限は、ローカル セキュリティ ポリシー管理ツールを使用して追加できます。 ローカル ポリシー に移動し、[ユーザー権利の割り当て] 開きます。 バッチ ジョブとしてログオンを選択し、ユーザー アカウントを追加します。

RunAs 値は、サービスとして実行するように構成されたサーバーには使用されません。 LocalSystem 以外の ID で実行する必要がある COM サービスは、サービス コントロール パネル アプレットまたはサービス コントローラー機能を使用して、適切なユーザー名とパスワードを設定する必要があります。 (これらの関数の詳細については、「Services」を参照してください)。

手記

Microsoft Windows Server 2003 の時点で、AppID クラスは HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppIDから明示的に読み取られます。これは、ほとんどのレジストリ キーとは異なり、HKEY_CLASSES_ROOT\AppIDと互換性がありません。

 

COM サーバー の登録の